From ae3def02deedae9ec711397f8a0698949fd16080 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Thu, 11 Oct 2012 13:36:24 +0800 Subject: fixes memory leak in facade phrase table2 --- src/storage/facade_phrase_table2.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/storage/facade_phrase_table2.h b/src/storage/facade_phrase_table2.h index 3f40f57..b9bc9ca 100644 --- a/src/storage/facade_phrase_table2.h +++ b/src/storage/facade_phrase_table2.h @@ -38,6 +38,18 @@ private: PhraseLargeTable2 * m_system_phrase_table; PhraseLargeTable2 * m_user_phrase_table; + void reset(){ + if (m_system_phrase_table) { + delete m_system_phrase_table; + m_system_phrase_table = NULL; + } + + if (m_user_phrase_table) { + delete m_user_phrase_table; + m_user_phrase_table = NULL; + } + } + public: /** * FacadePhraseTable2::FacadePhraseTable2: @@ -50,6 +62,16 @@ public: m_user_phrase_table = NULL; } + /** + * FacadePhraseTable2::~FacadePhraseTable2: + * + * The destructor of the FacadePhraseTable2. + * + */ + ~FacadePhraseTable2() { + reset(); + } + /** * FacadePhraseTable2::load: * @system: the memory chunk of the system phrase table. @@ -60,6 +82,8 @@ public: * */ bool load(MemoryChunk * system, MemoryChunk * user) { + reset(); + bool result = false; if (system) { m_system_phrase_table = new PhraseLargeTable2; -- cgit