summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutils/MsgJsonParser.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/utils/MsgJsonParser.cpp b/utils/MsgJsonParser.cpp
index 90f2baf..49d5fdd 100755
--- a/utils/MsgJsonParser.cpp
+++ b/utils/MsgJsonParser.cpp
@@ -44,7 +44,11 @@ msg_json_gen_object* msg_json_gen_new_obj(msg_json_gen_type type)
new_obj = (msg_json_gen_object *)g_try_malloc0(sizeof(msg_json_gen_object));
if (new_obj == NULL) {
- g_object_unref(json_value);
+ if (type == MSG_JSON_GEN_OBJECT)
+ g_object_unref(json_value);
+ else if (type == MSG_JSON_GEN_ARRAY)
+ g_array_unref((GArray *)json_value);
+
return NULL;
}
@@ -61,7 +65,11 @@ void msg_json_gen_free_obj(msg_json_gen_object *obj)
return;
}
if (obj->value != NULL) {
- g_object_unref(obj->value);
+ if (obj->type == MSG_JSON_GEN_OBJECT)
+ g_object_unref(obj->value);
+ else if (obj->type == MSG_JSON_GEN_ARRAY)
+ g_array_unref((GArray *)obj->value);
+
obj->value = NULL;
}
g_free(obj);