summaryrefslogtreecommitdiff
path: root/render/box_construct.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-11-10 19:11:01 +0000
committerVincent Sanders <vince@kyllikki.org>2014-11-10 19:12:10 +0000
commit44cfe7459c8d9bc883b39fbdc18a8ee7685bebde (patch)
treef4d907a899bc51e643f030e90351ae5759dbfbc0 /render/box_construct.c
parent098fbb628b34683711d841c29d4ca390b0d41dce (diff)
downloadnetsurf-44cfe7459c8d9bc883b39fbdc18a8ee7685bebde.tar.gz
netsurf-44cfe7459c8d9bc883b39fbdc18a8ee7685bebde.tar.bz2
fix leak of gadget on error path. (coverity 1109875)
Diffstat (limited to 'render/box_construct.c')
-rw-r--r--render/box_construct.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/render/box_construct.c b/render/box_construct.c
index c73d0590c..889865cb2 100644
--- a/render/box_construct.c
+++ b/render/box_construct.c
@@ -2576,8 +2576,10 @@ bool box_select(BOX_SPECIAL_PARAMS)
gadget->html = content;
err = dom_node_get_first_child(n, &c);
- if (err != DOM_NO_ERR)
+ if (err != DOM_NO_ERR) {
+ form_free_control(gadget);
return false;
+ }
while (c != NULL) {
dom_string *name;
@@ -2585,6 +2587,7 @@ bool box_select(BOX_SPECIAL_PARAMS)
err = dom_node_get_node_name(c, &name);
if (err != DOM_NO_ERR) {
dom_node_unref(c);
+ form_free_control(gadget);
return false;
}
@@ -2624,7 +2627,7 @@ bool box_select(BOX_SPECIAL_PARAMS)
c2) == false) {
dom_node_unref(c2);
dom_node_unref(c);
- goto no_memory;
+ return false;
}
} else {
dom_string_unref(c2_name);
@@ -2656,6 +2659,7 @@ bool box_select(BOX_SPECIAL_PARAMS)
if (gadget->data.select.num_items == 0) {
/* no options: ignore entire select */
+ form_free_control(gadget);
return true;
}