diff --git a/common/datastore/CDataStore.cpp b/common/datastore/CDataStore.cpp index 7087ce7..bb1d74f 100644 --- a/common/datastore/CDataStore.cpp +++ b/common/datastore/CDataStore.cpp @@ -5,6 +5,16 @@ #include #include +CDataStore::~CDataStore() { + this->Destroy(); +} + +void CDataStore::Destroy() { + if (this->m_alloc != -1) { + this->InternalDestroy(this->m_data, this->m_base, this->m_alloc); + } +} + void CDataStore::DetachBuffer(void** data, uint32_t* size, uint32_t* alloc) { // TODO } diff --git a/common/datastore/CDataStore.hpp b/common/datastore/CDataStore.hpp index b1c5d6e..cd8a6fd 100644 --- a/common/datastore/CDataStore.hpp +++ b/common/datastore/CDataStore.hpp @@ -17,8 +17,7 @@ class CDataStore { virtual void InternalDestroy(uint8_t*& data, uint32_t& base, uint32_t& alloc); virtual int32_t InternalFetchRead(uint32_t pos, uint32_t bytes, uint8_t*& data, uint32_t& base, uint32_t& alloc); virtual int32_t InternalFetchWrite(uint32_t pos, uint32_t bytes, uint8_t*& data, uint32_t& base, uint32_t& alloc, const char* fileName, int32_t lineNumber); - // TODO - // virtual ~CDataStore(); + virtual ~CDataStore(); virtual int32_t IsRead() const; virtual void Reset(); virtual void Finalize(); @@ -27,6 +26,7 @@ class CDataStore { virtual uint32_t GetHeaderSpace(); // Member functions + void Destroy(); int32_t FetchRead(uint32_t pos, uint32_t bytes); int32_t FetchWrite(uint32_t pos, uint32_t bytes, const char* fileName, int32_t lineNumber); CDataStore& Get(uint8_t& val);