diff options
Diffstat (limited to 'src/value.h')
-rw-r--r-- | src/value.h | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/value.h b/src/value.h index 3a052fb2..5fb78cb4 100644 --- a/src/value.h +++ b/src/value.h @@ -166,19 +166,8 @@ private: */ ~storage_t() { TRACE_DTOR(value_t::storage_t); - DEBUG("value.storage.refcount", "Destroying " << this); assert(refc == 0); - - switch (type) { - case BALANCE: - checked_delete(boost::get<balance_t *>(data)); - break; - case SEQUENCE: - checked_delete(boost::get<sequence_t *>(data)); - break; - default: - break; - } + destroy(); } private: @@ -218,6 +207,21 @@ private: friend inline void intrusive_ptr_release(value_t::storage_t * storage) { storage->release(); } + + void destroy() { + DEBUG("value.storage.refcount", "Destroying " << this); + switch (type) { + case BALANCE: + checked_delete(boost::get<balance_t *>(data)); + break; + case SEQUENCE: + checked_delete(boost::get<sequence_t *>(data)); + break; + default: + break; + } + type = VOID; + } }; /** |