Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Assert that the pointer is not null when dereferenced.
[simgrid.git] / src / mc / compare.cpp
index cbff01c..47cfabd 100644 (file)
@@ -708,7 +708,6 @@ static int compare_heap_area_with_type(
 
     simgrid::mc::Type* subtype;
     simgrid::mc::Type* subsubtype;
-    int res;
     int elm_size;
     const void* addr_pointed1;
     const void* addr_pointed2;
@@ -732,7 +731,6 @@ static int compare_heap_area_with_type(
           else
             return MC_snapshot_region_memcmp(real_area1, heap_region1, real_area2, heap_region2, type->byte_size) != 0;
         }
-        break;
 
       case DW_TAG_enumeration_type:
         if (area_size != -1 && type->byte_size != area_size)
@@ -775,13 +773,12 @@ static int compare_heap_area_with_type(
             break;
           default:
             return 0;
-            break;
         }
         for (int i = 0; i < type->element_count; i++) {
           // TODO, add support for variable stride (DW_AT_byte_stride)
-          res = compare_heap_area_with_type(state, process_index, (char*)real_area1 + (i * elm_size),
-                                            (char*)real_area2 + (i * elm_size), snapshot1, snapshot2, previous,
-                                            type->subtype, subtype->byte_size, check_ignore, pointer_level);
+          int res = compare_heap_area_with_type(state, process_index, (char*)real_area1 + (i * elm_size),
+                                                (char*)real_area2 + (i * elm_size), snapshot1, snapshot2, previous,
+                                                type->subtype, subtype->byte_size, check_ignore, pointer_level);
           if (res == 1)
             return res;
         }
@@ -809,6 +806,7 @@ static int compare_heap_area_with_type(
         for (size_t i = 0; i < (area_size / sizeof(void*)); i++) {
           addr_pointed1 = snapshot1->read(remote((void**)((char*)real_area1 + i * sizeof(void*))), process_index);
           addr_pointed2 = snapshot2->read(remote((void**)((char*)real_area2 + i * sizeof(void*))), process_index);
+          int res;
           if (addr_pointed1 > state.std_heap_copy.heapbase && addr_pointed1 < mc_snapshot_get_heap_end(snapshot1) &&
               addr_pointed2 > state.std_heap_copy.heapbase && addr_pointed2 < mc_snapshot_get_heap_end(snapshot2))
             res = compare_heap_area(state, process_index, addr_pointed1, addr_pointed2, snapshot1, snapshot2, previous,
@@ -1238,6 +1236,7 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
   int res;
 
   do {
+    xbt_assert(type != nullptr);
     switch (type->type) {
       case DW_TAG_unspecified_type:
         return 1;
@@ -1280,7 +1279,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
             break;
           default:
             return 0;
-            break;
         }
         for (i = 0; i < type->element_count; i++) {
           size_t off = i * elm_size;
@@ -1335,7 +1333,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
 
           return (addr_pointed1 != addr_pointed2);
         }
-        break;
       }
       case DW_TAG_structure_type:
       case DW_TAG_class_type:
@@ -1352,7 +1349,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
         break;
       case DW_TAG_subroutine_type:
         return -1;
-        break;
       default:
         XBT_VERB("Unknown case: %d", type->type);
         break;
@@ -1382,12 +1378,9 @@ static int compare_global_variables(
       && process_count == r2->privatized_data().size());
 
     // Compare the global variables separately for each simulates process:
-    for (size_t process_index = 0; process_index < process_count; process_index++) {
-      if (compare_global_variables(state,
-          object_info, process_index,
-          &r1->privatized_data()[process_index],
-          &r2->privatized_data()[process_index],
-          snapshot1, snapshot2))
+    for (size_t i = 0; i < process_count; i++) {
+      if (compare_global_variables(state, object_info, i, &r1->privatized_data()[i], &r2->privatized_data()[i],
+                                   snapshot1, snapshot2))
         return 1;
     }
     return 0;