From 7fe56c2261b93621a2666b1dbf50e3a027ee5b0d Mon Sep 17 00:00:00 2001
From: "fabian.peller-konrad@kit.edu" <fabian.peller-konrad@kit.edu>
Date: Tue, 13 Jul 2021 11:29:13 +0200
Subject: [PATCH] fix skill observer missing include. Fix RobotStateMemory
 SegFault if aron in memory is null or not a dict (actually this should never
 happen. Dont know why this is happening here...)

---
 .../RobotAPI/components/SkillObserver/SkillObserver.h |  4 ++++
 source/RobotAPI/libraries/armem/util/util.h           | 11 +++++++++++
 2 files changed, 15 insertions(+)

diff --git a/source/RobotAPI/components/SkillObserver/SkillObserver.h b/source/RobotAPI/components/SkillObserver/SkillObserver.h
index 44afdb007..b3b0e4243 100644
--- a/source/RobotAPI/components/SkillObserver/SkillObserver.h
+++ b/source/RobotAPI/components/SkillObserver/SkillObserver.h
@@ -23,6 +23,10 @@
 #pragma once
 
 #include <thread>
+#include <string>
+#include <vector>
+#include <mutex>
+#include <map>
 
 #include <ArmarXCore/core/Component.h>
 
diff --git a/source/RobotAPI/libraries/armem/util/util.h b/source/RobotAPI/libraries/armem/util/util.h
index f160efcd4..35fc1538b 100644
--- a/source/RobotAPI/libraries/armem/util/util.h
+++ b/source/RobotAPI/libraries/armem/util/util.h
@@ -46,6 +46,17 @@ namespace armarx::armem
         static_assert(std::is_base_of<armarx::aron::cppserializer::AronCppClass,
                       AronClass>::value);
 
+
+        if (!item.data())
+        {
+            return std::nullopt;
+        }
+
+        if (item.data()->getDescriptor() != aron::data::Descriptor::eDict)
+        {
+            return std::nullopt;
+        }
+
         try
         {
             AronClass t;
-- 
GitLab