Do not terminate the program but assume the state is different.
// The pointers are both in the heap:
if(addr_pointed1 > std_heap && (char *)addr_pointed1 < (char*) std_heap + STD_HEAP_SIZE){
if(!(addr_pointed2 > std_heap && (char *)addr_pointed2 < (char*) std_heap + STD_HEAP_SIZE))
// The pointers are both in the heap:
if(addr_pointed1 > std_heap && (char *)addr_pointed1 < (char*) std_heap + STD_HEAP_SIZE){
if(!(addr_pointed2 > std_heap && (char *)addr_pointed2 < (char*) std_heap + STD_HEAP_SIZE))
return compare_heap_area(addr_pointed1, addr_pointed2, NULL, types, other_types, type->dw_type_id, pointer_level);
}
// The pointers are both in the current object R/W segment:
else if(addr_pointed1 > start_data && (char*)addr_pointed1 <= (char *)start_data + region_size){
if(!(addr_pointed2 > start_data && (char*)addr_pointed2 <= (char *)start_data + region_size))
return compare_heap_area(addr_pointed1, addr_pointed2, NULL, types, other_types, type->dw_type_id, pointer_level);
}
// The pointers are both in the current object R/W segment:
else if(addr_pointed1 > start_data && (char*)addr_pointed1 <= (char *)start_data + region_size){
if(!(addr_pointed2 > start_data && (char*)addr_pointed2 <= (char *)start_data + region_size))
if(type->dw_type_id == NULL)
return (addr_pointed1 != addr_pointed2);
else
if(type->dw_type_id == NULL)
return (addr_pointed1 != addr_pointed2);
else