- if(strcmp(xbt_dynar_get_as(s_tokens1, 1, char *), xbt_dynar_get_as(s_tokens2, 1, char *)) != 0){
- /* Ignore this variable ? */
- if(is_stack_ignore_variable(ip1, xbt_dynar_get_as(s_tokens1, 0, char *)) && is_stack_ignore_variable(ip2, xbt_dynar_get_as(s_tokens2, 0, char *))){
- xbt_dynar_free(&s_tokens1);
- xbt_dynar_free(&s_tokens2);
- cursor++;
- continue;
+ addr1 = (void *) strtoul(xbt_dynar_get_as(s_tokens1, 1, char *), NULL, 16);
+ addr2 = (void *) strtoul(xbt_dynar_get_as(s_tokens2, 1, char *), NULL, 16);
+ if(addr1 > std_heap && (char *)addr1 <= (char *)std_heap + STD_HEAP_SIZE && addr2 > std_heap && (char *)addr2 <= (char *)std_heap + STD_HEAP_SIZE){
+ res_compare = compare_area(addr1, addr2, NULL);
+ if(res_compare == 1){
+ if(is_stack_ignore_variable(frame_name1, xbt_dynar_get_as(s_tokens1, 0, char *)) && is_stack_ignore_variable(frame_name2, xbt_dynar_get_as(s_tokens2, 0, char *))){
+ xbt_dynar_free(&s_tokens1);
+ xbt_dynar_free(&s_tokens2);
+ cursor++;
+ continue;
+ }else {
+ #ifdef MC_VERBOSE
+ XBT_VERB("Different local variable : %s at addresses %p - %p in frame %s", var_name, addr1, addr2, frame_name1);
+ #endif
+ #ifdef MC_DEBUG
+ XBT_DEBUG("Different local variable : %s at addresses %p - %p", var_name, addr1, addr2);
+ #endif
+ xbt_dynar_free(&s_tokens1);
+ xbt_dynar_free(&s_tokens2);
+ xbt_dynar_free(&tokens1);
+ xbt_dynar_free(&tokens2);
+ xbt_free(frame_name1);
+ xbt_free(frame_name2);
+ return 1;
+ }