@@ -32,7 +32,7 @@ DeferredCommitBuffer::DeferredCommitBuffer()
3232
3333DeferredCommitBuffer::~DeferredCommitBuffer ()
3434{
35- clear ();
35+ clearImpl ();
3636}
3737
3838void DeferredCommitBuffer::addObjectToCommit (BaseObject *obj)
@@ -54,6 +54,7 @@ void DeferredCommitBuffer::flush()
5454 std::lock_guard<std::recursive_mutex> guard (m_mutex);
5555 flushCommits ();
5656 flushFinalizations ();
57+ clearImpl ();
5758}
5859
5960TimeStamp DeferredCommitBuffer::lastObjectCommit () const
@@ -69,13 +70,7 @@ TimeStamp DeferredCommitBuffer::lastObjectFinalization() const
6970void DeferredCommitBuffer::clear ()
7071{
7172 std::lock_guard<std::recursive_mutex> guard (m_mutex);
72-
73- for (auto &obj : m_commitBuffer)
74- obj->refDec (RefType::INTERNAL);
75- for (auto &obj : m_finalizationBuffer)
76- obj->refDec (RefType::INTERNAL);
77- m_commitBuffer.clear ();
78- m_finalizationBuffer.clear ();
73+ clearImpl ();
7974}
8075
8176bool DeferredCommitBuffer::empty () const
@@ -141,4 +136,15 @@ void DeferredCommitBuffer::flushFinalizations()
141136 m_lastFinalization = newTimeStamp ();
142137}
143138
139+ void DeferredCommitBuffer::clearImpl ()
140+ {
141+ for (auto &obj : m_commitBuffer)
142+ obj->refDec (RefType::INTERNAL);
143+ for (auto &obj : m_finalizationBuffer)
144+ obj->refDec (RefType::INTERNAL);
145+ m_commitBuffer.clear ();
146+ m_finalizationBuffer.clear ();
147+ m_needToSortFinalizations = false ;
148+ }
149+
144150} // namespace helium
0 commit comments