Index: src/libchcore/TOverlappedDataBuffer.h
===================================================================
diff -u -N -r3c343f2e7aa0d489706136e78f2f56cdd5d417a9 -rb75259a9158d8b46d747e20ab4960dd002adb4b1
--- src/libchcore/TOverlappedDataBuffer.h	(.../TOverlappedDataBuffer.h)	(revision 3c343f2e7aa0d489706136e78f2f56cdd5d417a9)
+++ src/libchcore/TOverlappedDataBuffer.h	(.../TOverlappedDataBuffer.h)	(revision b75259a9158d8b46d747e20ab4960dd002adb4b1)
@@ -72,6 +72,9 @@
 	void SetBytesTransferred(ULONG_PTR ulBytes) { InternalHigh = ulBytes; }
 	ULONG_PTR GetBytesTransferred() const { return InternalHigh; }
 
+	DWORD GetRealDataSize() const { return m_dwRealDataSize; }
+	void SetRealDataSize(DWORD dwRealDataSize) { m_dwRealDataSize = dwRealDataSize; }
+
 	unsigned long long GetFilePosition() const { return (unsigned long long)OffsetHigh << 32 | Offset; }
 	void SetFilePosition(unsigned long long ullPosition) { OffsetHigh = (DWORD) (ullPosition >> 32); Offset = (DWORD) ullPosition; }
 
@@ -85,7 +88,7 @@
 	LPVOID m_pBuffer;				// pointer to the allocated buffer
 	size_t m_stBufferSize;			// total buffer size
 	DWORD m_dwRequestedDataSize;	// part of the buffer that is to be used for data transfer (<= m_stBufferSize)
-
+	DWORD m_dwRealDataSize;			// data size as reported by read operation
 	DWORD m_dwErrorCode;			// win32 error code
 	bool m_bLastPart;				// marks the last part of the file
 	unsigned long long m_ullBufferOrder;	// marks the order of this buffer