Index: src/libchcore/TOverlappedReader.cpp =================================================================== diff -u -N -r3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9 -r6e4ac7776b68464371cd8522a2a8d79fbcab3b28 --- src/libchcore/TOverlappedReader.cpp (.../TOverlappedReader.cpp) (revision 3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9) +++ src/libchcore/TOverlappedReader.cpp (.../TOverlappedReader.cpp) (revision 6e4ac7776b68464371cd8522a2a8d79fbcab3b28) @@ -73,6 +73,9 @@ void TOverlappedReader::AddFullBuffer(TOverlappedDataBuffer* pBuffer) { + if (!pBuffer) + throw TCoreException(eErr_InvalidPointer, L"pBuffer", LOCATION); + LOG_TRACE(m_spLog) << L"Queuing buffer as full; buffer-order: " << pBuffer->GetFilePosition() << L", requested-data-size: " << pBuffer->GetRequestedDataSize() << L", real-data-size: " << pBuffer->GetRealDataSize() << @@ -87,18 +90,20 @@ m_spFullBuffers->Push(pBuffer); } - TOverlappedDataBuffer* TOverlappedReader::GetFullBuffer() - { - return m_spFullBuffers->Pop(); - } - TOrderedBufferQueuePtr TOverlappedReader::GetFinishedQueue() const { return m_spFullBuffers; } size_t TOverlappedReader::GetBufferCount() const { - return m_tFailedReadBuffers.GetCount() + m_spFullBuffers->GetCount(); + return m_tEmptyBuffers.GetCount() + m_tFailedReadBuffers.GetCount() + m_spFullBuffers->GetCount(); } + + void TOverlappedReader::ReleaseBuffers(const TBufferListPtr& spBuffers) + { + m_tEmptyBuffers.ReleaseBuffers(spBuffers); + m_tFailedReadBuffers.ReleaseBuffers(spBuffers); + m_spFullBuffers->ReleaseBuffers(spBuffers); + } }