Index: src/libchcore/TOverlappedReaderFB.cpp
===================================================================
diff -u -rc175b6c9d5be6ee6ee0eae90abb167b9eaf2abc3 -r518d1a3484cde91ff17c071211df5e40cb3487e3
--- src/libchcore/TOverlappedReaderFB.cpp	(.../TOverlappedReaderFB.cpp)	(revision c175b6c9d5be6ee6ee0eae90abb167b9eaf2abc3)
+++ src/libchcore/TOverlappedReaderFB.cpp	(.../TOverlappedReaderFB.cpp)	(revision 518d1a3484cde91ff17c071211df5e40cb3487e3)
@@ -72,7 +72,9 @@
 
 	TSubTaskBase::ESubOperationResult TOverlappedReaderFB::StopThreaded()
 	{
-		WaitForSingleObjectEx(m_eventProcessingFinished.Handle(), INFINITE, FALSE);
+		DWORD dwResult = WaitForSingleObjectEx(m_eventProcessingFinished.Handle(), INFINITE, FALSE);
+		_ASSERTE(dwResult == WAIT_OBJECT_0); dwResult;
+
 		return m_eThreadResult;
 	}
 
@@ -155,18 +157,24 @@
 
 	void TOverlappedReaderFB::WaitForOnTheFlyBuffers()
 	{
-		DWORD dwResult = WaitForSingleObjectEx(m_counterOnTheFly.GetEventHandle(), INFINITE, TRUE);
-		switch(dwResult)
+		bool bStop = false;
+		do
 		{
-		case STATUS_USER_APC:
-			break;
+			DWORD dwResult = WaitForSingleObjectEx(m_counterOnTheFly.GetEventHandle(), INFINITE, TRUE);
+			switch(dwResult)
+			{
+			case STATUS_USER_APC:
+				break;
 
-		case WAIT_OBJECT_0:
-			return;
+			case WAIT_OBJECT_0:
+				bStop = true;
+				break;
 
-		default:
-			throw TCoreException(eErr_UnhandledCase, L"Unknown result from async waiting function", LOCATION);
+			default:
+				throw TCoreException(eErr_UnhandledCase, L"Unknown result from async waiting function", LOCATION);
+			}
 		}
+		while(!bStop);
 	}
 
 	void TOverlappedReaderFB::ClearQueues()