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);
 	}
 }