diff options
author | Thomas White <taw@bitwiz.me.uk> | 2018-10-30 17:56:38 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.me.uk> | 2018-10-30 17:56:38 +0100 |
commit | 19f20ab06476f93977d1c7130b76f7c31d198936 (patch) | |
tree | 5410b960ab5b00d043a0d828299116baf38d0eeb /src/sc_interp.c | |
parent | 6171bc9d7f86ea0ac1c6abd4a213850fa4f81300 (diff) |
Fix errors reported by static analyser
Diffstat (limited to 'src/sc_interp.c')
-rw-r--r-- | src/sc_interp.c | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/src/sc_interp.c b/src/sc_interp.c index 7bbfeeb..f2f604b 100644 --- a/src/sc_interp.c +++ b/src/sc_interp.c @@ -105,19 +105,44 @@ SCCallbackList *sc_callback_list_new() if ( cbl == NULL ) return NULL; cbl->names = calloc(8, sizeof(char *)); - if ( cbl->names == NULL ) return NULL; + if ( cbl->names == NULL ) { + free(cbl); + return NULL; + } cbl->box_funcs = calloc(8, sizeof(cbl->box_funcs[0])); - if ( cbl->box_funcs == NULL ) return NULL; + if ( cbl->box_funcs == NULL ) { + free(cbl->names); + free(cbl); + return NULL; + } cbl->draw_funcs = calloc(8, sizeof(cbl->draw_funcs[0])); - if ( cbl->draw_funcs == NULL ) return NULL; + if ( cbl->draw_funcs == NULL ) { + free(cbl->box_funcs); + free(cbl->names); + free(cbl); + return NULL; + } cbl->click_funcs = calloc(8, sizeof(cbl->click_funcs[0])); - if ( cbl->click_funcs == NULL ) return NULL; + if ( cbl->click_funcs == NULL ) { + free(cbl->draw_funcs); + free(cbl->box_funcs); + free(cbl->names); + free(cbl); + return NULL; + } cbl->vps = calloc(8, sizeof(cbl->vps[0])); - if ( cbl->vps == NULL ) return NULL; + if ( cbl->vps == NULL ) { + free(cbl->click_funcs); + free(cbl->draw_funcs); + free(cbl->box_funcs); + free(cbl->names); + free(cbl); + return NULL; + } cbl->max_callbacks = 8; cbl->n_callbacks = 0; @@ -978,13 +1003,14 @@ static void output_frame(SCInterpreter *scin, SCBlock *bl, Stylesheet *ss, char *result; fr = add_subframe(sc_interp_get_frame(scin)); - fr->scblocks = bl; - fr->resizable = 1; if ( fr == NULL ) { fprintf(stderr, _("Failed to add frame.\n")); return; } + fr->scblocks = bl; + fr->resizable = 1; + /* Lowest priority: current state of interpreter */ set_frame_default_style(fr, scin); |