- size_t offset;
-
- xbt_dynar_foreach(mc_checkpoint_ignore, cursor, region) {
- if (region->addr > snapshot->regions[0]->start_addr
- && (char *) (region->addr) <
- (char *) snapshot->regions[0]->start_addr + STD_HEAP_SIZE) {
- offset =
- (char *) region->addr - (char *) snapshot->regions[0]->start_addr;
- memset((char *) snapshot->regions[0]->data + offset, 0, region->size);
- } else if (region->addr > snapshot->regions[2]->start_addr
- && (char *) (region->addr) <
- (char *) snapshot->regions[2]->start_addr +
- snapshot->regions[2]->size) {
- offset =
- (char *) region->addr - (char *) snapshot->regions[2]->start_addr;
- memset((char *) snapshot->regions[2]->data + offset, 0, region->size);
- } else if (region->addr > snapshot->regions[1]->start_addr
- && (char *) (region->addr) <
- (char *) snapshot->regions[1]->start_addr +
- snapshot->regions[1]->size) {
- offset =
- (char *) region->addr - (char *) snapshot->regions[1]->start_addr;
- memset((char *) snapshot->regions[1]->data + offset, 0, region->size);
- }
+ xbt_dynar_foreach (mc_checkpoint_ignore, cursor, region) {
+ s_mc_snapshot_ignored_data_t ignored_data;
+ ignored_data.start = region->addr;
+ ignored_data.size = region->size;
+ ignored_data.data = malloc(region->size);
+ memcpy(ignored_data.data, region->addr, region->size);
+ xbt_dynar_push(snapshot->ignored_data, &ignored_data);