diff options
Diffstat (limited to 'src/components/smart_objects/src/smart_object.cc')
-rw-r--r-- | src/components/smart_objects/src/smart_object.cc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/components/smart_objects/src/smart_object.cc b/src/components/smart_objects/src/smart_object.cc index eb1c737aff..d13ca87848 100644 --- a/src/components/smart_objects/src/smart_object.cc +++ b/src/components/smart_objects/src/smart_object.cc @@ -734,16 +734,32 @@ void SmartObject::duplicate(const SmartObject& OtherObject) { void SmartObject::cleanup_data() { switch (m_type) { case SmartType_String: - delete m_data.str_value; + if (m_data.str_value) { + delete m_data.str_value; + m_data.str_value = nullptr; + m_type = SmartType_Null; + } break; case SmartType_Map: - delete m_data.map_value; + if (m_data.map_value) { + delete m_data.map_value; + m_data.map_value = nullptr; + m_type = SmartType_Null; + } break; case SmartType_Array: - delete m_data.array_value; + if (m_data.array_value) { + delete m_data.array_value; + m_data.array_value = nullptr; + m_type = SmartType_Null; + } break; case SmartType_Binary: - delete m_data.binary_value; + if (m_data.binary_value) { + delete m_data.binary_value; + m_data.binary_value = nullptr; + m_type = SmartType_Null; + } break; default: break; |