Skip to content

Commit 3cacd75

Browse files
satoshi-otasaka1-s
authored andcommitted
fix(bvp): remove expired module safely (autowarefoundation#9212)
* fix(bvp): remove expired module safely Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> * fix: remove module id set Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> * fix: use itr to erase expired module Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> * fix: remove unused function Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> --------- Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com>
1 parent 9e8f2ad commit 3cacd75

File tree

4 files changed

+625
-38
lines changed

4 files changed

+625
-38
lines changed

planning/behavior_velocity_intersection_module/src/manager.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -303,20 +303,20 @@ void IntersectionModuleManager::deleteExpiredModules(
303303
{
304304
const auto isModuleExpired = getModuleExpiredFunction(path);
305305

306-
// Copy container to avoid iterator corruption
307-
// due to scene_modules_.erase() in unregisterModule()
308-
const auto copied_scene_modules = scene_modules_;
309-
310-
for (const auto & scene_module : copied_scene_modules) {
311-
if (isModuleExpired(scene_module)) {
306+
auto itr = scene_modules_.begin();
307+
while (itr != scene_modules_.end()) {
308+
if (isModuleExpired(*itr)) {
312309
// default
313-
removeRTCStatus(getUUID(scene_module->getModuleId()));
314-
removeUUID(scene_module->getModuleId());
310+
removeRTCStatus(getUUID((*itr)->getModuleId()));
311+
removeUUID((*itr)->getModuleId());
315312
// occlusion
316-
const auto intersection_module = std::dynamic_pointer_cast<IntersectionModule>(scene_module);
313+
const auto intersection_module = std::dynamic_pointer_cast<IntersectionModule>(*itr);
317314
const auto occlusion_uuid = intersection_module->getOcclusionUUID();
318315
occlusion_rtc_interface_.removeCooperateStatus(occlusion_uuid);
319-
unregisterModule(scene_module);
316+
registered_module_id_set_.erase((*itr)->getModuleId());
317+
itr = scene_modules_.erase(itr);
318+
} else {
319+
itr++;
320320
}
321321
}
322322
}

0 commit comments

Comments
 (0)