From: Gabriel Corona Date: Tue, 19 May 2015 08:23:31 +0000 (+0200) Subject: [mc] Fix bug in Snapshot::read_bytes X-Git-Tag: v3_12~727 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e0220fb23d7a1a52b3925f3fcba8e77d4f5abfc6?hp=78ad8111935dd39520e2cbae135e042817d78583 [mc] Fix bug in Snapshot::read_bytes MC_region_read is allowed to return a pointer to another buffer containing the data. We have to handle this case. --- diff --git a/src/mc/mc_snapshot.cpp b/src/mc/mc_snapshot.cpp index 345e23b23d..cd0ffaad6e 100644 --- a/src/mc/mc_snapshot.cpp +++ b/src/mc/mc_snapshot.cpp @@ -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); - 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); }