diff --git a/moses2/ManagerBase.cpp b/moses2/ManagerBase.cpp index 74534b8d1..ed38075de 100644 --- a/moses2/ManagerBase.cpp +++ b/moses2/ManagerBase.cpp @@ -37,9 +37,8 @@ ManagerBase::~ManagerBase() { system.featureFunctions.CleanUpAfterSentenceProcessing(*m_input); - if (m_pool) { - GetPool().Reset(); - } + GetPool().Reset(); + GetHypoRecycler().Clear(); } void ManagerBase::InitPools() diff --git a/moses2/Recycler.h b/moses2/Recycler.h index 7d21817aa..2d2325b75 100644 --- a/moses2/Recycler.h +++ b/moses2/Recycler.h @@ -7,7 +7,7 @@ #pragma once #include -#include +#include #include namespace Moses2 @@ -25,8 +25,8 @@ public: T Get() { if (!m_coll.empty()) { - T &obj = m_coll.top(); - m_coll.pop(); + T &obj = m_coll.back(); + m_coll.pop_back(); return obj; } else { return NULL; @@ -39,12 +39,12 @@ public: // call this for existing object to put back into queue for reuse void Recycle(const T& val) { - m_coll.push(val); + m_coll.push_back(val); } protected: // objects that have been give back to us - std::stack m_coll; + std::deque m_coll; }; } /* namespace Moses2 */