From: Ben Pfaff Date: Sat, 9 Oct 2021 16:41:01 +0000 (-0700) Subject: macro: Fix memory leaks in error cases parsing function arguments. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=47ddf8f19f87c20f456c5798bc394bdab3583623 macro: Fix memory leaks in error cases parsing function arguments. Found by Address Sanitizer. --- diff --git a/src/language/lexer/macro.c b/src/language/lexer/macro.c index bced649ec3..a089a3a7c3 100644 --- a/src/language/lexer/macro.c +++ b/src/language/lexer/macro.c @@ -1135,7 +1135,10 @@ expand_macro_function (const struct macro_expander *me, struct string_array args = STRING_ARRAY_INITIALIZER; size_t n_consumed = parse_function_args (me, input, n_input, mf->name, &args); if (!n_consumed) - return 0; + { + string_array_destroy (&args); + return 0; + } if (args.n < mf->min_args || args.n > mf->max_args) { @@ -1158,6 +1161,7 @@ expand_macro_function (const struct macro_expander *me, mf->name); else NOT_REACHED (); + string_array_destroy (&args); return 0; }