修复 一个无效内存释放的问题

This commit is contained in:
Letter 2020-09-13 14:49:48 +08:00
parent 40a830ddcd
commit d043ea1d29

View File

@ -599,7 +599,7 @@ char* csonEncodeUnformatted(void *obj, CsonModel *model, int modelSize)
void csonFree(void *obj, CsonModel *model, int modelSize) void csonFree(void *obj, CsonModel *model, int modelSize)
{ {
CsonList *list, *p; CsonList *list, *p;
void *tmpNode; int *tmpNode;
for (short i = 0; i < modelSize; i++) for (short i = 0; i < modelSize; i++)
{ {
@ -624,7 +624,15 @@ void csonFree(void *obj, CsonModel *model, int modelSize)
list = list->next; list = list->next;
if (p->obj) if (p->obj)
{ {
tmpNode = csonIsBasicListModel(model[i].param.sub.model) ? &(p->obj) : p->obj; if (csonIsBasicListModel(model[i].param.sub.model))
{
tmpNode = cson.malloc(sizeof(int));
*tmpNode = (int)(&(p->obj));
}
else
{
tmpNode = p->obj;
}
csonFree(tmpNode, csonFree(tmpNode,
model[i].param.sub.model, model[i].param.sub.size); model[i].param.sub.model, model[i].param.sub.size);
} }