X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/26ac669d68abd5ccb430266a6a57d1d2201827cf..b97aa8c4138dbbde8d81ff6a635eef0a304f0efe:/src/mc/mc_compare.c diff --git a/src/mc/mc_compare.c b/src/mc/mc_compare.c index e27511e4a5..36ff8b95bc 100644 --- a/src/mc/mc_compare.c +++ b/src/mc/mc_compare.c @@ -147,6 +147,21 @@ int SIMIX_pre_mc_compare_snapshots(smx_simcall_t simcall, return snapshot_compare(s1, s2, NULL, NULL); } +int get_heap_region_index(mc_snapshot_t s){ + int i =0; + while(i < s->num_reg){ + switch(s->regions[i]->type){ + case 0: + return i; + break; + default: + i++; + break; + } + } + return -1; +} + int snapshot_compare(mc_snapshot_t s1, mc_snapshot_t s2, mc_comparison_times_t ct1, mc_comparison_times_t ct2){ int raw_mem = (mmalloc_get_current_heap() == raw_heap); @@ -524,6 +539,8 @@ static int compare_local_variables(char *s1, char *s2, xbt_dynar_t heap_equals){ s_tokens2 = xbt_str_split(xbt_dynar_get_as(tokens2, cursor, char *), "="); if(xbt_dynar_length(s_tokens1) > 1 && xbt_dynar_length(s_tokens2) > 1){ if((strcmp(xbt_dynar_get_as(s_tokens1, 0, char *), "ip") == 0) && (strcmp(xbt_dynar_get_as(s_tokens2, 0, char *), "ip") == 0)){ + xbt_free(ip1); + xbt_free(ip2); ip1 = strdup(xbt_dynar_get_as(s_tokens1, 1, char *)); ip2 = strdup(xbt_dynar_get_as(s_tokens2, 1, char *)); } @@ -542,15 +559,22 @@ static int compare_local_variables(char *s1, char *s2, xbt_dynar_t heap_equals){ XBT_VERB("Variable %s is different between stacks in %s : %s - %s", xbt_dynar_get_as(s_tokens1, 0, char *), ip1, xbt_dynar_get_as(s_tokens1, 1, char *), xbt_dynar_get_as(s_tokens2, 1, char *)); xbt_dynar_free(&s_tokens1); xbt_dynar_free(&s_tokens2); + xbt_dynar_free(&tokens1); + xbt_dynar_free(&tokens2); + xbt_free(ip1); + xbt_free(ip2); return 1; } } } xbt_dynar_free(&s_tokens1); xbt_dynar_free(&s_tokens2); + cursor++; } + xbt_free(ip1); + xbt_free(ip2); xbt_dynar_free(&tokens1); xbt_dynar_free(&tokens2); return 0;