X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/00e99fac7a9baae6a698d47e69de37c5f5bd1b21..98c076f6daa9f55f8e0e06a583c07bc05777854c:/src/mc/mc_compare.cpp diff --git a/src/mc/mc_compare.cpp b/src/mc/mc_compare.cpp index cbaedb516c..0ab694a774 100644 --- a/src/mc/mc_compare.cpp +++ b/src/mc/mc_compare.cpp @@ -186,12 +186,10 @@ static int compare_areas_with_type(struct mc_compare_state& state, return compare_heap_area(addr_pointed1, addr_pointed2, snapshot1, snapshot2, NULL, type->subtype, pointer_level); } + // The pointers are both in the current object R/W segment: - else if (addr_pointed1 > region1->start_addr - && (char *) addr_pointed1 <= (char *) region1->start_addr + region1->size) { - if (! - (addr_pointed2 > region2->start_addr - && (char *) addr_pointed2 <= (char *) region2->start_addr + region2->size)) + else if (mc_region_contain(region1, addr_pointed1)) { + if (!mc_region_contain(region2, addr_pointed2)) return 1; if (type->dw_type_id == NULL) return (addr_pointed1 != addr_pointed2); @@ -203,6 +201,9 @@ static int compare_areas_with_type(struct mc_compare_state& state, } } + // TODO, We do not handle very well the case where + // it belongs to a different (non-heap) region from the current one. + else { return (addr_pointed1 != addr_pointed2); }