diff options
Diffstat (limited to 'src/components/smart_objects/src/smart_object.cc')
-rw-r--r-- | src/components/smart_objects/src/smart_object.cc | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/components/smart_objects/src/smart_object.cc b/src/components/smart_objects/src/smart_object.cc index eb1c737aff..a8fc267615 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; @@ -876,11 +892,10 @@ bool SmartObject::isValid() const { } errors::eType SmartObject::validate( - rpc::ValidationReport* report__, + rpc::ValidationReport* report, const utils::SemanticVersion& MessageVersion, const bool allow_unknown_enums) { - return m_schema.validate( - *this, report__, MessageVersion, allow_unknown_enums); + return m_schema.validate(*this, report, MessageVersion, allow_unknown_enums); } void SmartObject::setSchema(const CSmartSchema& schema) { |