From f27095dde915e56f6ff0c90269d05585c26fbd72 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Mon, 7 Nov 2011 23:04:05 +0100 Subject: [PATCH] Fix memory leak in xbt_cfg_set_parse(). --- src/xbt/config.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/xbt/config.c b/src/xbt/config.c index 13df108f0f..9fbffa5609 100644 --- a/src/xbt/config.c +++ b/src/xbt/config.c @@ -660,10 +660,17 @@ void xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) CATCH(e) { if (e.category == not_found_error) { xbt_ex_free(e); - name = xbt_strdup(name); - free(optionlist_cpy); - THROWF(not_found_error, 0, - "No registered variable corresponding to '%s'.", name); + TRY { + THROWF(not_found_error, 0, + "No registered variable corresponding to '%s'.", name); + } + TRY_CLEANUP { + /* name points into optionlist_cpy, it cannot be freed before */ + free(optionlist_cpy); + } + CATCH_ANONYMOUS { + RETHROW; + } } free(optionlist_cpy); RETHROW; -- 2.20.1