From ec64a0bc7eabb45783e7031729c5b1ff37821cbd Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 21 Oct 2019 17:03:44 +0200 Subject: [PATCH] main: also free memory on errors * src/derives.c (derives_free): Beware of NULL. * src/main.c (main): Let the 'finish' label include memory release. --- src/derives.c | 7 +++++-- src/main.c | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/derives.c b/src/derives.c index c44a9fd2..8de79866 100644 --- a/src/derives.c +++ b/src/derives.c @@ -109,6 +109,9 @@ derives_compute (void) void derives_free (void) { - free (derives[0]); - free (derives); + if (derives) + { + free (derives[0]); + free (derives); + } } diff --git a/src/main.c b/src/main.c index 06bcb1c5..ab0229f5 100644 --- a/src/main.c +++ b/src/main.c @@ -207,6 +207,8 @@ main (int argc, char *argv[]) timevar_pop (tv_parser); } + finish: + timevar_push (tv_free); nullable_free (); derives_free (); @@ -228,8 +230,6 @@ main (int argc, char *argv[]) if (trace_flag & trace_bitsets) bitset_stats_dump (stderr); - finish: - /* Stop timing and print the times. */ timevar_stop (tv_total); timevar_print (stderr);