summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/context/cdmap.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/context/cdmap.h b/src/context/cdmap.h
index 66f897818..c218d05f3 100644
--- a/src/context/cdmap.h
+++ b/src/context/cdmap.h
@@ -329,7 +329,9 @@ public:
++i) {
// mark it as being a destruction (short-circuit restore())
(*i).second->d_map = NULL;
- (*i).second->deleteSelf();
+ if(!(*i).second->d_noTrash) {
+ (*i).second->deleteSelf();
+ }
}
d_map.clear();
d_first = NULL;
@@ -349,7 +351,9 @@ public:
++i) {
// mark it as being a destruction (short-circuit restore())
(*i).second->d_map = NULL;
- (*i).second->deleteSelf();
+ if(!(*i).second->d_noTrash) {
+ (*i).second->deleteSelf();
+ }
}
d_map.clear();
d_first = NULL;
@@ -486,7 +490,9 @@ public:
d_map.erase(j);//FIXME multithreading
Debug("gc") << "key " << k << " obliterated zero-scope: " << elt << std::endl;
// was already destructed, so don't call ->deleteSelf()
- ::operator delete(elt);
+ if(!elt->d_noTrash) {
+ ::operator delete(elt);
+ }
}
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback