[cpp] Change traversal order of Json::~Json(). Old order would grow stack much more than needed, leading to crashes when freeing big Json trees.

This commit is contained in:
badlogic 2019-10-30 15:48:26 +01:00
parent f440c08944
commit 9fabc60323

View File

@ -114,17 +114,23 @@ Json::Json(const char *value) :
} }
Json::~Json() { Json::~Json() {
delete _child; spine::Json* curr = nullptr;
spine::Json* next = _child;
do {
curr = next;
if (curr) {
next = curr->_next;
}
delete curr;
} while(next);
if (_valueString) { if (_valueString) {
SpineExtension::free(_valueString, __FILE__, __LINE__); SpineExtension::free(_valueString, __FILE__, __LINE__);
} }
if (_name) { if (_name) {
SpineExtension::free(_name, __FILE__, __LINE__); SpineExtension::free(_name, __FILE__, __LINE__);
} }
delete _next;
} }
const char *Json::skip(const char *inValue) { const char *Json::skip(const char *inValue) {