Index: src/libchcore/TLocalFilesystem.cpp =================================================================== diff -u -N -r3c343f2e7aa0d489706136e78f2f56cdd5d417a9 -rb75259a9158d8b46d747e20ab4960dd002adb4b1 --- src/libchcore/TLocalFilesystem.cpp (.../TLocalFilesystem.cpp) (revision 3c343f2e7aa0d489706136e78f2f56cdd5d417a9) +++ src/libchcore/TLocalFilesystem.cpp (.../TLocalFilesystem.cpp) (revision b75259a9158d8b46d747e20ab4960dd002adb4b1) @@ -40,6 +40,7 @@ #include "TFileTime.h" #include "TOverlappedDataBuffer.h" #include "RoundingFunctions.h" +#include BEGIN_CHCORE_NAMESPACE @@ -458,7 +459,8 @@ if (!IsOpen()) THROW_CORE_EXCEPTION(eErr_InternalProblem); - if (!::ReadFileEx(m_hFile, rBuffer.GetBufferPtr(), rBuffer.GetRequestedDataSize(), &rBuffer, OverlappedReadCompleted)) + ATLTRACE(_T("Reading %lu bytes\n"), rBuffer.GetRequestedDataSize()); + if(!::ReadFileEx(m_hFile, rBuffer.GetBufferPtr(), rBuffer.GetRequestedDataSize(), &rBuffer, OverlappedReadCompleted)) { DWORD dwLastError = GetLastError(); switch(dwLastError) @@ -494,6 +496,7 @@ if (m_bNoBuffering && rBuffer.IsLastPart()) dwToWrite = RoundUp(dwToWrite, MaxSectorSize); + ATLTRACE(_T("Writing %lu bytes\n"), dwToWrite); if (!::WriteFileEx(m_hFile, rBuffer.GetBufferPtr(), dwToWrite, &rBuffer, OverlappedWriteCompleted)) { if (GetLastError() == ERROR_IO_PENDING) @@ -511,9 +514,11 @@ if (m_bNoBuffering && rBuffer.IsLastPart()) { - DWORD dwToWrite = boost::numeric_cast(rBuffer.GetBytesTransferred()); + DWORD dwToWrite = boost::numeric_cast(rBuffer.GetRealDataSize()); DWORD dwReallyWritten = RoundUp(dwToWrite, MaxSectorSize); + ATLTRACE(_T("Finalize file - size diff: written: %I64u, required: %I64u\n"), dwReallyWritten, dwToWrite); + if (dwToWrite != dwReallyWritten) { unsigned long long ullNewFileSize = rBuffer.GetFilePosition() + dwToWrite; // new size @@ -522,6 +527,7 @@ return false; //seek + ATLTRACE(_T("Truncating file to %I64u bytes\n"), ullNewFileSize); if (!SetFilePointer(ullNewFileSize, FILE_BEGIN)) return false;