From d23d9fca34dae6aea0cb6e8640ccf3f2cbc81256 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Thu, 11 Oct 2012 13:47:31 +0800 Subject: fixes memory leak in facade chewing table --- src/storage/facade_chewing_table.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/storage/facade_chewing_table.h b/src/storage/facade_chewing_table.h index da740c4..50683eb 100644 --- a/src/storage/facade_chewing_table.h +++ b/src/storage/facade_chewing_table.h @@ -39,6 +39,17 @@ private: ChewingLargeTable * m_system_chewing_table; ChewingLargeTable * m_user_chewing_table; + void reset() { + if (m_system_chewing_table) { + delete m_system_chewing_table; + m_system_chewing_table = NULL; + } + + if (m_user_chewing_table) { + delete m_user_chewing_table; + m_user_chewing_table = NULL; + } + } public: /** * FacadeChewingTable::FacadeChewingTable: @@ -51,6 +62,16 @@ public: m_user_chewing_table = NULL; } + /** + * FacadeChewingTable::~FacadeChewingTable: + * + * The destructor of the FacadeChewingTable. + * + */ + ~FacadeChewingTable() { + reset(); + } + /** * FacadeChewingTable::set_options: * @options: the pinyin options. @@ -80,6 +101,8 @@ public: */ bool load(pinyin_option_t options, MemoryChunk * system, MemoryChunk * user){ + reset(); + bool result = false; if (system) { m_system_chewing_table = new ChewingLargeTable(options); -- cgit