Index: src/ch/task.cpp =================================================================== diff -u -N -r56cf39888865c8edb5b5eb02a901557b6aef42e9 -r678a716a4ed83d5790a407ce60dfcf7d8ca703fa --- src/ch/task.cpp (.../task.cpp) (revision 56cf39888865c8edb5b5eb02a901557b6aef42e9) +++ src/ch/task.cpp (.../task.cpp) (revision 678a716a4ed83d5790a407ce60dfcf7d8ca703fa) @@ -502,7 +502,7 @@ void CTask::Load(const CString& strPath, bool bData) { - std::ifstream ifs(strPath); + std::ifstream ifs(strPath, ios_base::in | ios_base::binary); boost::archive::binary_iarchive ar(ifs); m_cs.Lock(); @@ -582,7 +582,7 @@ { CString strPath = m_strTaskBasePath.c_str() + GetUniqueName() + (bData ? _T(".atd") : _T(".atp")); - std::ofstream ofs(strPath); + std::ofstream ofs(strPath, ios_base::out | ios_base::binary); boost::archive::binary_oarchive ar(ofs); if(bData) @@ -1798,7 +1798,7 @@ void CTask::CustomCopyFile(CUSTOM_COPY_PARAMS* pData) { - HANDLE hSrc = INVALID_HANDLE_VALUE, hDst = INVALID_HANDLE_VALUE; + TAutoFileHandle hSrc = INVALID_HANDLE_VALUE, hDst = INVALID_HANDLE_VALUE; ictranslate::CFormat fmt; bool bRetry = false; @@ -1809,7 +1809,7 @@ // Data regarding dest file CFileInfo fiDest; - bool bExist=fiDest.Create(pData->strDstFile, std::numeric_limits::max()); + bool bExist = fiDest.Create(pData->strDstFile, std::numeric_limits::max()); chcore::IFeedbackHandler* piFeedbackHandler = pData->pTask->GetFeedbackHandler(); BOOST_ASSERT(piFeedbackHandler); @@ -2176,8 +2176,8 @@ { // we need to copy rest so do the second pass // close files - CloseHandle(hSrc); - CloseHandle(hDst); + hSrc.Close(); + hDst.Close(); // second pass bFirstPass=false; @@ -2240,18 +2240,16 @@ } // close files - CloseHandle(hSrc); - CloseHandle(hDst); + hSrc.Close(); + hDst.Close(); pData->bProcessed = true; } catch(...) { // close handles - if(hSrc != INVALID_HANDLE_VALUE) - CloseHandle(hSrc); - if(hDst != INVALID_HANDLE_VALUE) - CloseHandle(hDst); + hSrc.Close(); + hDst.Close(); throw; }