summaryrefslogtreecommitdiffstats
path: root/openmp/libomptarget/src/omptarget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/libomptarget/src/omptarget.cpp')
-rw-r--r--openmp/libomptarget/src/omptarget.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/openmp/libomptarget/src/omptarget.cpp b/openmp/libomptarget/src/omptarget.cpp
index 14f45312030..447820deaaf 100644
--- a/openmp/libomptarget/src/omptarget.cpp
+++ b/openmp/libomptarget/src/omptarget.cpp
@@ -419,7 +419,7 @@ int target_data_end(DeviceTy &Device, int32_t arg_num, void **args_base,
uintptr_t ub = (uintptr_t) HstPtrBegin + data_size;
Device.ShadowMtx.lock();
for (ShadowPtrListTy::iterator it = Device.ShadowPtrMap.begin();
- it != Device.ShadowPtrMap.end(); ++it) {
+ it != Device.ShadowPtrMap.end();) {
void **ShadowHstPtrAddr = (void**) it->first;
// An STL map is sorted on its keys; use this property
@@ -439,7 +439,9 @@ int target_data_end(DeviceTy &Device, int32_t arg_num, void **args_base,
// If the struct is to be deallocated, remove the shadow entry.
if (DelEntry) {
DP("Removing shadow pointer " DPxMOD "\n", DPxPTR(ShadowHstPtrAddr));
- Device.ShadowPtrMap.erase(it);
+ it = Device.ShadowPtrMap.erase(it);
+ } else {
+ ++it;
}
}
Device.ShadowMtx.unlock();
OpenPOWER on IntegriCloud