Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Fix bug in Snapshot::read_bytes
[simgrid.git] / src / mc / mc_snapshot.cpp
index 345e23b..cd0ffaa 100644 (file)
@@ -187,8 +187,15 @@ const void* Snapshot::read_bytes(void* buffer, std::size_t size,
   AddressSpace::ReadMode mode)
 {
   mc_mem_region_t region = mc_get_snapshot_region((void*)address, this, process_index);
   AddressSpace::ReadMode mode)
 {
   mc_mem_region_t region = mc_get_snapshot_region((void*)address, this, process_index);
-  if (region)
-    return MC_region_read(region, buffer, (void*)address, size);
+  if (region) {
+    const void* res = MC_region_read(region, buffer, (void*)address, size);
+    if (buffer == res || mode == AddressSpace::Lazy)
+      return res;
+    else {
+      memcpy(buffer, res, size);
+      return buffer;
+    }
+  }
   else
     return MC_process_read(this->process, mode, buffer, (void*)address, size, process_index);
 }
   else
     return MC_process_read(this->process, mode, buffer, (void*)address, size, process_index);
 }