Browse Source

Fix Access Violation in data model member access with nullptr struct binding (#377)

* Fix access violation to members of nullptr struct pointer

* Fix child call
Maximilian Stark 3 years ago
parent
commit
97619d41a6
1 changed files with 8 additions and 0 deletions
  1. 8 0
      Source/Core/DataVariable.cpp

+ 8 - 0
Source/Core/DataVariable.cpp

@@ -141,21 +141,29 @@ BasePointerDefinition::BasePointerDefinition(VariableDefinition* underlying_defi
 
 
 bool BasePointerDefinition::Get(void* ptr, Variant& variant)
 bool BasePointerDefinition::Get(void* ptr, Variant& variant)
 {
 {
+    if(!ptr) 
+        return false;
     return underlying_definition->Get(DereferencePointer(ptr), variant);
     return underlying_definition->Get(DereferencePointer(ptr), variant);
 }
 }
 
 
 bool BasePointerDefinition::Set(void* ptr, const Variant& variant)
 bool BasePointerDefinition::Set(void* ptr, const Variant& variant)
 {
 {
+    if(!ptr) 
+        return false;
     return underlying_definition->Set(DereferencePointer(ptr), variant);
     return underlying_definition->Set(DereferencePointer(ptr), variant);
 }
 }
 
 
 int BasePointerDefinition::Size(void* ptr)
 int BasePointerDefinition::Size(void* ptr)
 {
 {
+    if(!ptr) 
+        return 0;
     return underlying_definition->Size(DereferencePointer(ptr));
     return underlying_definition->Size(DereferencePointer(ptr));
 }
 }
 
 
 DataVariable BasePointerDefinition::Child(void* ptr, const DataAddressEntry& address)
 DataVariable BasePointerDefinition::Child(void* ptr, const DataAddressEntry& address)
 {
 {
+    if(!ptr)
+        return DataVariable();
     return underlying_definition->Child(DereferencePointer(ptr), address);
     return underlying_definition->Child(DereferencePointer(ptr), address);
 }
 }