< prev index next >
src/hotspot/share/memory/filemap.cpp
Print this page
*** 1746,1755 ****
--- 1746,1763 ----
}
bool FileMapInfo::map_heap_data(MemRegion **heap_mem, int first,
int max, int* num, bool is_open_archive) {
MemRegion* regions = MemRegion::create_array(max, mtInternal);
+
+ struct Cleanup {
+ MemRegion* _regions;
+ bool _aborted;
+ Cleanup(MemRegion* regions) : _regions(regions), _aborted(true) { }
+ ~Cleanup() { if (_aborted) { FREE_C_HEAP_ARRAY(MemRegion, _regions); } }
+ } cleanup(regions);
+
FileMapRegion* si;
int region_num = 0;
for (int i = first;
i < first + max; i++) {
*** 1805,1814 ****
--- 1813,1823 ----
log_info(cds)("UseSharedSpaces: mapped heap regions are corrupt");
return false;
}
}
+ cleanup._aborted = false;
// the shared heap data is mapped successfully
*heap_mem = regions;
*num = region_num;
return true;
}
< prev index next >