diff options
author | Morgan Deters <mdeters@gmail.com> | 2010-08-17 05:06:09 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2010-08-17 05:06:09 +0000 |
commit | daf715e2ccb53bd88c6f374840b5d41e72c61c90 (patch) | |
tree | d868168b9ae9fc6fd4797f361d3596e3bd3197fc /src/context | |
parent | 229ab1aca6e89315a07899b093951d8f4f9d0c02 (diff) |
Add "no trash" CDMap elements, so that CDMap elements can themselves
be allocated in context memory. CDMap black-box test extended.
Diffstat (limited to 'src/context')
-rw-r--r-- | src/context/cdmap.h | 12 |
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); + } } } } |