malloc_info* heapinfo2 = mc_snapshot_read_region(&heapinfos2[i1], heap_region2, &heapinfo_temp2, sizeof(malloc_info));
if (heapinfo1->type == MMALLOC_TYPE_FREE || heapinfo1->type == MMALLOC_TYPE_HEAPINFO) { /* Free block */
- i1 += heapinfo1->free_block.size;
+ i1 ++;
continue;
}
malloc_info* heapinfo2b = mc_snapshot_read_region(&heapinfos2[i2], heap_region2, &heapinfo_temp2b, sizeof(malloc_info));
if (heapinfo2b->type == MMALLOC_TYPE_FREE || heapinfo2b->type == MMALLOC_TYPE_HEAPINFO) {
- i2 += heapinfo2b->free_block.size;
+ i2 ++;
+ continue;
+ }
+
+ // We currently do not match fragments with unfragmented blocks (maybe we should).
+ if (heapinfo2b->type == MMALLOC_TYPE_UNFRAGMENTED) {
+ i2++;
continue;
}
malloc_info heapinfo_temp1, heapinfo_temp2;
- void* real_area1_to_compare = area1;
- void* real_area2_to_compare = area2;
-
if (previous == NULL) {
previous =
xbt_dynar_new(sizeof(heap_area_pair_t), heap_area_pair_free_voidp);