From: Augustin Degomme Date: Wed, 30 Oct 2013 17:09:37 +0000 (+0100) Subject: leak-- , potential segfault-- X-Git-Tag: v3_10_rc1~37 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/18b0c9100f020d980f681a3e99eed106fba87804?hp=429ba8f5ec2ee83bbe3652478ebec9f5528b65d0 leak-- , potential segfault-- --- diff --git a/src/smpi/smpi_replay.c b/src/smpi/smpi_replay.c index 8f258f5713..27770ca4cd 100644 --- a/src/smpi/smpi_replay.c +++ b/src/smpi/smpi_replay.c @@ -402,7 +402,7 @@ static void action_waitall(const char *const *action){ } } int rank_traced = smpi_process_index(); - instr_extra_data extra = xbt_new(s_instr_extra_data_t,1); + instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_WAITALL; extra->send_size=count_requests; TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra); diff --git a/src/xbt/xbt_replay.c b/src/xbt/xbt_replay.c index ac163cc061..c2c5bd2afe 100644 --- a/src/xbt/xbt_replay.c +++ b/src/xbt/xbt_replay.c @@ -108,7 +108,9 @@ void xbt_replay_reader_free(xbt_replay_reader_t *reader) */ void xbt_replay_action_register(const char *action_name, action_fun function) { - xbt_dict_set(action_funs, str_tolower (action_name), function, NULL); + char* lowername = str_tolower (action_name); + xbt_dict_set(action_funs, lowername, function, NULL); + xbt_free(lowername); } /** \ingroup XBT_replay @@ -118,7 +120,9 @@ void xbt_replay_action_register(const char *action_name, action_fun function) */ void xbt_replay_action_unregister(const char *action_name) { - xbt_dict_remove(action_funs, str_tolower (action_name)); + char* lowername = str_tolower (action_name); + xbt_dict_remove(action_funs, lowername); + xbt_free(lowername); } void _xbt_replay_action_init(void) @@ -147,8 +151,10 @@ int xbt_replay_action_runner(int argc, char *argv[]) if (action_fp) { // A unique trace file char **evt; while ((evt = action_get_action(argv[0]))) { + char* lowername = str_tolower (evt[1]); action_fun function = - (action_fun)xbt_dict_get(action_funs, str_tolower (evt[1])); + (action_fun)xbt_dict_get(action_funs, lowername); + xbt_free(lowername); function((const char **)evt); for (i=0;evt[i]!= NULL;i++) free(evt[i]); @@ -164,7 +170,9 @@ int xbt_replay_action_runner(int argc, char *argv[]) xbt_replay_reader_t reader = xbt_replay_reader_new(argv[1]); while ((evt=xbt_replay_reader_get(reader))) { if (!strcmp(argv[0],evt[0])) { - action_fun function = (action_fun)xbt_dict_get(action_funs, str_tolower (evt[1])); + char* lowername = str_tolower (evt[1]); + action_fun function = (action_fun)xbt_dict_get(action_funs, lowername); + xbt_free(lowername); function(evt); } else { XBT_WARN("%s: Ignore trace element not for me",