Important update:
- Buffer: - fix undefined value: zero terminate buffer when loading from FD - DataTree: - fix memory leak: destroy temporary search path - improve delete(): delete all children for member if no path given - bug fix: initiate object with 0 length (not -1) - JSONparse: - Remove level parameter - Add path to load/save/print methods (print only portion of tree) - fix memory leak: destroy temporary object name
This commit is contained in:
@@ -239,6 +239,9 @@ TDataMember ** CDataTree::GetMemberPtr( TDataMember * BaseMember, const char *
|
||||
Member = *Child;
|
||||
}
|
||||
|
||||
// Destroy temp path
|
||||
free( WorkPath );
|
||||
|
||||
return Child;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -258,15 +261,25 @@ bool CDataTree::Delete( TDataMember * BaseMember, const char * Path )
|
||||
TDataMember * Parent;
|
||||
TDataMember ** Member;
|
||||
|
||||
// Check if exists
|
||||
if (!(Member = GetMemberPtr( BaseMember, Path, false, &Parent ))) {
|
||||
// Validate
|
||||
if (!BaseMember && (!Path || !*Path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Destroy
|
||||
DestroyMember( Member );
|
||||
Parent->Len--;
|
||||
return true;
|
||||
if (!Path || !*Path) {
|
||||
// No path - destroy value
|
||||
DestroyValue( BaseMember );
|
||||
return true;
|
||||
}
|
||||
else if ((Member = GetMemberPtr( BaseMember, Path, false, &Parent ))) {
|
||||
// If valid path, destroy member
|
||||
DestroyMember( Member );
|
||||
Parent->Len--;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -323,7 +336,7 @@ bool CDataTree::SetValue( TDataMember * Member, EDataType Type, const char * Va
|
||||
}
|
||||
else {
|
||||
// Set null value
|
||||
SetValuePtr( Member, Type, NULL, -1 );
|
||||
SetValuePtr( Member, Type, NULL, 0 );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user