diff options
author | Vincent Sanders <vince@kyllikki.org> | 2014-11-10 19:11:01 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2014-11-10 19:12:10 +0000 |
commit | 44cfe7459c8d9bc883b39fbdc18a8ee7685bebde (patch) | |
tree | f4d907a899bc51e643f030e90351ae5759dbfbc0 /render | |
parent | 098fbb628b34683711d841c29d4ca390b0d41dce (diff) | |
download | netsurf-44cfe7459c8d9bc883b39fbdc18a8ee7685bebde.tar.gz netsurf-44cfe7459c8d9bc883b39fbdc18a8ee7685bebde.tar.bz2 |
fix leak of gadget on error path. (coverity 1109875)
Diffstat (limited to 'render')
-rw-r--r-- | render/box_construct.c | 8 |
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; } |