Important Bug fix:

- Fixed memory errors and leaks in DataTreeCore:
  - Initial values not set correctly for Name, Next/PrevPeer
  - Correctly set Last/FirstChild & Prev/NextPeer references on delete
  - Added methods SetValuePtr()
- Fixed memory errors and leaks in JSONparseCore:
  - Set set string/int/float values by passing pointers, ie. SetValuePtr()
This commit is contained in:
Charl Wentzel
2018-11-18 12:47:33 +02:00
parent 2382ff4527
commit 85a811c19f
3 changed files with 58 additions and 24 deletions

View File

@@ -681,7 +681,7 @@ bool CJSONparse::ParseString( CDataMember * Member )
}
// Set string
Member->SetValue( jtString, Value, Len );
Member->SetValuePtr( jtString, Value, Len );
return true;
}
//---------------------------------------------------------------------------
@@ -712,7 +712,7 @@ bool CJSONparse::ParsePrimitive( CDataMember * Member )
// Check for primitive values
if ((Len == 4) && !strncasecmp( Mark, "null", 4 )) {
Member->SetValue( jtNull, NULL, -1 );
Member->SetValue( jtNull );
}
else if ((Len == 4) && !strncasecmp( Mark, "true", 4 )) {
Member->SetValue( jtBool, "1" );
@@ -727,7 +727,7 @@ bool CJSONparse::ParsePrimitive( CDataMember * Member )
Value = (char*)malloc( Len+1 );
memcpy( Value, Mark, Len );
Value[Len] = 0;
Member->SetValue( jtInt, Value, Len );
Member->SetValuePtr( jtInt, Value, Len );
}
else {
// Try conversion to float
@@ -736,7 +736,7 @@ bool CJSONparse::ParsePrimitive( CDataMember * Member )
Value = (char*)malloc( Len+1 );
memcpy( Value, Mark, Len );
Value[Len] = 0;
Member->SetValue( jtFloat, Value, Len );
Member->SetValuePtr( jtFloat, Value, Len );
}
else {
Error = true;