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:
Charl Wentzel
2017-03-29 21:27:28 +02:00
parent 5691b22df9
commit 8f39adb0f3
4 changed files with 131 additions and 70 deletions

View File

@@ -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;
}