From: Felix Fietkau Date: Wed, 30 Jan 2008 02:56:25 +0000 (+0100) Subject: free the history on package unload X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=commitdiff_plain;h=01ca9e5e467e4f324f52fd80a2ec4db999b3db48 free the history on package unload --- diff --git a/list.c b/list.c index 4fe5116..334bc32 100644 --- a/list.c +++ b/list.c @@ -144,34 +144,6 @@ uci_free_section(struct uci_section *s) uci_free_element(&s->e); } -static struct uci_package * -uci_alloc_package(struct uci_context *ctx, const char *name) -{ - struct uci_package *p; - - p = uci_alloc_element(ctx, package, name, 0); - p->ctx = ctx; - uci_list_init(&p->sections); - uci_list_init(&p->history); - return p; -} - -static void -uci_free_package(struct uci_package *p) -{ - struct uci_element *e, *tmp; - - if(!p) - return; - - if (p->path) - free(p->path); - uci_foreach_element_safe(&p->sections, tmp, e) { - uci_free_section(uci_to_section(e)); - } - uci_free_element(&p->e); -} - /* record a change that was done to a package */ static void uci_add_history(struct uci_context *ctx, struct uci_package *p, int cmd, char *section, char *option, char *value) @@ -210,6 +182,37 @@ uci_free_history(struct uci_history *h) uci_free_element(&h->e); } +static struct uci_package * +uci_alloc_package(struct uci_context *ctx, const char *name) +{ + struct uci_package *p; + + p = uci_alloc_element(ctx, package, name, 0); + p->ctx = ctx; + uci_list_init(&p->sections); + uci_list_init(&p->history); + return p; +} + +static void +uci_free_package(struct uci_package *p) +{ + struct uci_element *e, *tmp; + + if(!p) + return; + + if (p->path) + free(p->path); + uci_foreach_element_safe(&p->sections, tmp, e) { + uci_free_section(uci_to_section(e)); + } + uci_foreach_element_safe(&p->history, tmp, e) { + uci_free_history(uci_to_history(e)); + } + uci_free_element(&p->e); +} + static struct uci_element *uci_lookup_list(struct uci_context *ctx, struct uci_list *list, const char *name) { struct uci_element *e;