Index: src/libchcore/OverlappedCallbacks.cpp =================================================================== diff -u -N -r3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9 -rbef894e38e5c1486824787cf8c47a87a0828b228 --- src/libchcore/OverlappedCallbacks.cpp (.../OverlappedCallbacks.cpp) (revision 3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9) +++ src/libchcore/OverlappedCallbacks.cpp (.../OverlappedCallbacks.cpp) (revision bef894e38e5c1486824787cf8c47a87a0828b228) @@ -47,7 +47,10 @@ // in case of error (e.g end-of-file error triggers the difference and dwNumberOfBytesTransfered contains more up-to-date information) pBuffer->SetBytesTransferred(dwNumberOfBytesTransfered); - pQueue->AddFinishedReadBuffer(pBuffer); + if (pBuffer->HasError()) + pQueue->AddFailedReadBuffer(pBuffer); + else + pQueue->AddFinishedReadBuffer(pBuffer); } VOID CALLBACK OverlappedWriteCompleted(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped) @@ -58,6 +61,9 @@ pBuffer->SetErrorCode(dwErrorCode); pBuffer->SetBytesTransferred(dwNumberOfBytesTransfered); - pQueue->AddFinishedWriteBuffer(pBuffer); + if (pBuffer->HasError()) + pQueue->AddFailedWriteBuffer(pBuffer); + else + pQueue->AddFinishedWriteBuffer(pBuffer); } }