From 364f3f25283d3e5c685628bc9ceb7fd8b54bc210 Mon Sep 17 00:00:00 2001 From: Firat Yusuf Duran <uzivy@student.kit.edu> Date: Thu, 27 Jun 2024 20:50:53 +0200 Subject: [PATCH] fix segfault --- .../skills/manager/SkillManagerComponentPlugin.cpp | 13 +++++++++++++ .../manager/SkillManagerComponentPluginUser.cpp | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp index eb6222ba8..bd5dc3ee9 100644 --- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp @@ -979,6 +979,14 @@ namespace armarx::plugins s.parameters[failed.id] = failed; s.parameters[aborted.id] = aborted; + const auto& parameters = std::make_shared<aron::type::Object>(); + typesLock.lock(); + if (fluxioDC.types.find(s.id) == fluxioDC.types.end()) + { + fluxioDC.types[s.id] = parameters; + } + typesLock.unlock(); + if (skillDescription.parametersType != nullptr) { // input parameters @@ -1572,8 +1580,13 @@ namespace armarx::plugins std::shared_lock l(fluxioDC.typesMutex); for (const auto& [skillId, skillTypes] : fluxioDC.types) { + if (skillTypes == nullptr) { + ARMARX_WARNING << "SkillTypes with id '" << skillId << "' not found."; + continue; + } ret->addMemberType(skillId, skillTypes); } + l.unlock(); ret->setObjectName("SkillTypes"); return ret; } diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp index cee17b6de..d8bbbc3c3 100644 --- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp +++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp @@ -181,7 +181,7 @@ namespace armarx aron::type::dto::AronObjectPtr SkillManagerComponentPluginUser::getTypes(const Ice::Current& current) { - const auto res = this->plugin->getTypes(); + const auto& res = this->plugin->getTypes(); return res->toAronObjectDTO(); } -- GitLab