From 95520d7d0ced439d00e6a0f7f983511f02c0d69d Mon Sep 17 00:00:00 2001 From: "spahr@ksat-stuttgart.de" <spahr@ksat-stuttgart.de> Date: Wed, 2 Apr 2025 22:18:31 +0200 Subject: [PATCH] Check if objectId exists in childrednmap first; this will prevent a hardfault --- src/fsfw/devicehandlers/AssemblyBase.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/fsfw/devicehandlers/AssemblyBase.cpp b/src/fsfw/devicehandlers/AssemblyBase.cpp index e2a5f524..72298384 100644 --- a/src/fsfw/devicehandlers/AssemblyBase.cpp +++ b/src/fsfw/devicehandlers/AssemblyBase.cpp @@ -264,7 +264,15 @@ void AssemblyBase::overwriteDeviceHealth(object_id_t objectId, HasHealthIF::Heal triggerEvent(OVERWRITING_HEALTH, objectId, oldHealth); internalState = STATE_OVERWRITE_HEALTH; modeHelper.setForced(true); - sendHealthCommand(childrenMap[objectId].commandQueue, EXTERNAL_CONTROL); + if(childrenMap.find(objectId) != childrenMap.end()) { + sendHealthCommand(childrenMap.at(objectId).commandQueue, EXTERNAL_CONTROL); + } else { +#if FSFW_CPP_OSTREAM_ENABLED == 1 + sif::debug << std::hex << SystemObject::getObjectId() << ": invalid mode table entry" + << std::endl; +#endif + } + } void AssemblyBase::triggerModeHelperEvents(Mode_t mode, Submode_t submode) {