summaryrefslogtreecommitdiff
path: root/com32/gpllib/zzjson/zzjson_free.c
diff options
context:
space:
mode:
authorErwan Velu <erwanaliasr1@gmail.com>2011-03-18 21:56:58 +0100
committerErwan Velu <erwanaliasr1@gmail.com>2011-03-18 21:56:58 +0100
commitd830004bf61b18d9f819ab8de8d62f509b74d367 (patch)
tree4bf43608611b7641d5df89fb85e6fb4081199350 /com32/gpllib/zzjson/zzjson_free.c
parent3905382158cc8c5c40f71e1b33f1802341838bca (diff)
downloadsyslinux-d830004bf61b18d9f819ab8de8d62f509b74d367.tar.gz
zzjson: Adding zzjson 1.1.0
Diffstat (limited to 'com32/gpllib/zzjson/zzjson_free.c')
-rw-r--r--com32/gpllib/zzjson/zzjson_free.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/com32/gpllib/zzjson/zzjson_free.c b/com32/gpllib/zzjson/zzjson_free.c
new file mode 100644
index 00000000..01dfd242
--- /dev/null
+++ b/com32/gpllib/zzjson/zzjson_free.c
@@ -0,0 +1,29 @@
+/* JSON free
+ * ZZJSON - Copyright (C) 2008 by Ivo van Poorten
+ * License: GNU Lesser General Public License version 2.1
+ */
+
+#include "zzjson.h"
+
+void zzjson_free(ZZJSON_CONFIG *config, ZZJSON *zzjson) {
+ while (zzjson) {
+ ZZJSON *next;
+ switch(zzjson->type) {
+ case ZZJSON_OBJECT:
+ config->free(zzjson->value.object.label);
+ zzjson_free(config, zzjson->value.object.val);
+ break;
+ case ZZJSON_ARRAY:
+ zzjson_free(config, zzjson->value.array.val);
+ break;
+ case ZZJSON_STRING:
+ config->free(zzjson->value.string.string);
+ break;
+ default:
+ break;
+ }
+ next = zzjson->next;
+ config->free(zzjson);
+ zzjson = next;
+ }
+}