- if(res_compare != -1){
- if(ignore_done < xbt_dynar_length(mc_heap_comparison_ignore)){
- if(in_mc_comparison_ignore((int)current_block, -1))
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 1);
- else
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 0);
- }else{
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 0);
- }
- }
-
- if(res_compare == 0 || res_compare == -1){
- for(k=1; k < heapinfo2[current_block].busy_block.size; k++)
- heapinfo2[current_block+k].busy_block.equal_to = new_heap_area(i1, -1);
- for(k=1; k < heapinfo1[current_block].busy_block.size; k++)
- heapinfo1[current_block+k].busy_block.equal_to = new_heap_area(i1, -1);
- equal = 1;
- match_equals(previous, equals);
- i1 = i1 + heapinfo1[current_block].busy_block.size;
- }
-
- xbt_dynar_reset(previous);
-
- }
-
- }
-
- }
-
- if(heapinfo1[i1].busy_block.busy_size == 0){
- i1++;
- continue;
- }
-
- i2 = 1;
- equal = 0;
-
- /* Try first to associate to same block in the other heap */
- if(heapinfo2[current_block].type == heapinfo1[current_block].type){
-
- if(heapinfo1[current_block].busy_block.busy_size == heapinfo2[current_block].busy_block.busy_size){
-
- addr_block2 = ((void*) (((ADDR2UINT(current_block)) - 1) * BLOCKSIZE + (char*)heapbase2));
-
- add_heap_area_pair(previous, current_block, -1, current_block, -1);
-
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore((int)current_block, -1))
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 1);
- else
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 0);
- }else{
- res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 0);
- }
-