From 12b23a0ff448672e04ffe2e0fb973751f8a42a34 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Thu, 20 Mar 2008 11:03:32 +0100 Subject: [PATCH] liboconfig/oconfig.c: Free all allocated memory in oconfig_free(). Signed-off-by: Sebastian Harl Signed-off-by: Florian Forster --- src/liboconfig/oconfig.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/liboconfig/oconfig.c b/src/liboconfig/oconfig.c index 2bb80cc9..db9285b3 100644 --- a/src/liboconfig/oconfig.c +++ b/src/liboconfig/oconfig.c @@ -76,11 +76,25 @@ void oconfig_free (oconfig_item_t *ci) { int i; + if (ci == NULL) + return; + + if (ci->key != NULL) + free (ci->key); + + for (i = 0; i < ci->values_num; i++) + if ((ci->values[i].type == OCONFIG_TYPE_STRING) + && (NULL != ci->values[i].value.string)) + free (ci->values[i].value.string); + if (ci->values != NULL) free (ci->values); for (i = 0; i < ci->children_num; i++) oconfig_free (ci->children + i); + + if (ci->children != NULL) + free (ci->children); } /* -- 2.11.0