diff --git a/moses/src/LanguageModelKen.cpp b/moses/src/LanguageModelKen.cpp index e4a5e328f..3f0a471dd 100644 --- a/moses/src/LanguageModelKen.cpp +++ b/moses/src/LanguageModelKen.cpp @@ -127,12 +127,14 @@ template void LanguageModelKen::TranslateIDs(const std::vec } template LanguageModelKen::LanguageModelKen(bool lazy) - :m_ngram(NULL), m_lazy(lazy) + :m_ngram(NULL), m_lazy(lazy), m_nullContextState(NULL), m_beginSentenceState(NULL) { } template LanguageModelKen::~LanguageModelKen() { + delete m_nullContextState; + delete m_beginSentenceState; delete m_ngram; } diff --git a/moses/src/PhraseDictionaryTree.cpp b/moses/src/PhraseDictionaryTree.cpp index 70f4a7b03..060835fec 100644 --- a/moses/src/PhraseDictionaryTree.cpp +++ b/moses/src/PhraseDictionaryTree.cpp @@ -1,5 +1,6 @@ // $Id$ // vim:tabstop=2 +#include #include "PhraseDictionaryTree.h" #include #include @@ -121,18 +122,19 @@ typedef LVoc WordVoc; static WordVoc* ReadVoc(const std::string& filename) { - static std::map vocs; + static std::map > vocs; #ifdef WITH_THREADS boost::mutex mutex; boost::mutex::scoped_lock lock(mutex); #endif - std::map::iterator vi = vocs.find(filename); + std::map >::iterator vi = vocs.find(filename); if (vi == vocs.end()) { - WordVoc* voc = new WordVoc(); - voc->Read(filename); - vocs[filename] = voc; + boost::shared_ptr p(new WordVoc()); + // WordVoc* voc = new WordVoc(); + p.get()->Read(filename); + vocs[filename] = p; } - return vocs[filename]; + return vocs[filename].get(); }