From 149933f19168c87b400c0e0e5583fbcef0859ce8 Mon Sep 17 00:00:00 2001 From: mquinson Date: Sun, 7 Aug 2005 11:04:24 +0000 Subject: [PATCH] Make sure the lens dynar always gets cleaned, even on exception git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1594 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/xbt/dict_multi.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/xbt/dict_multi.c b/src/xbt/dict_multi.c index 7b85efa9e5..6db40206ca 100644 --- a/src/xbt/dict_multi.c +++ b/src/xbt/dict_multi.c @@ -88,6 +88,7 @@ xbt_multidict_set(xbt_dict_t mdict, void *data, void_f_pvoid_t *free_ctn) { xbt_dynar_t lens = xbt_dynar_new(sizeof(unsigned long int),NULL); int i; + xbt_ex_t e; for (i = 0; i < xbt_dynar_length(keys); i++) { char *thiskey = xbt_dynar_get_as(keys, i, char*); @@ -96,9 +97,13 @@ xbt_multidict_set(xbt_dict_t mdict, xbt_dynar_push(lens,&thislen); } - xbt_multidict_set_ext(mdict, keys, lens, data, free_ctn); - xbt_dynar_free(&lens); - + TRY { + xbt_multidict_set_ext(mdict, keys, lens, data, free_ctn); + } CLEANUP { + xbt_dynar_free(&lens); + } CATCH(e) { + RETHROW; + } } /** \brief Insert \e data under all the keys contained in \e keys, providing their sizes in \e lens. -- 2.20.1