已合并
修复ScreenSessionManager::Dump中并发访问导致迭代器越界的问题 #20038
修复ScreenSessionManager::Dump中并发访问导致迭代器越界的问题 #20038
已合并
peixu创建于 8月17日
1 个文件变更+4-5
@@ -102,14 +102,14 @@ public:
102 return oss.str();102 return oss.str();
103 }103 }
104 104 
105- const std::vector<TrackInfo>& GetRecordInfos()105+ std::vector<TrackInfo> GetRecordInfos()
106 {106 {
107 std::lock_guard<std::mutex> lock(mutex_);107 std::lock_guard<std::mutex> lock(mutex_);
108- allRecordInfos_ = recordInfos_;108+ std::vector<TrackInfo> result = recordInfos_;
109 for (auto info : recordBoundsInfos_) {109 for (auto info : recordBoundsInfos_) {
110- allRecordInfos_.emplace_back(info);110+ result.emplace_back(info);
wulong158
wulong158wulong1588月18日

可以使用迭代器直接初始化vector,代码更简洁且效率更高,如: std::vector my_vector(my_list.begin(), my_list.end());

likedislike
111 }111 }
112- return allRecordInfos_;112+ return result;
113 }113 }
114 114 
115private:115private:
@@ -117,7 +117,6 @@ private:
117 mutable std::chrono::system_clock::time_point lastOutputTime_;117 mutable std::chrono::system_clock::time_point lastOutputTime_;
118 std::vector<TrackInfo> recordInfos_;118 std::vector<TrackInfo> recordInfos_;
119 std::list<TrackInfo> recordBoundsInfos_;119 std::list<TrackInfo> recordBoundsInfos_;
120- std::vector<TrackInfo> allRecordInfos_;
121};120};
122 121 
123 122