已合并
修复ScreenSessionManager::Dump中并发访问导致迭代器越界的问题 #20038
peixu创建于 8月17日
修复ScreenSessionManager::Dump中并发访问导致迭代器越界的问题 #20038
已合并
共 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); |
| 111 | } | 111 | } |
| 112 | - return allRecordInfos_; | 112 | + return result; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | private: | 115 | private: |
| @@ -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 | ||
可以使用迭代器直接初始化vector,代码更简洁且效率更高,如: std::vector my_vector(my_list.begin(), my_list.end());