Handle read errors in CFile::Copy()

This fixes an endless loop (However, I don't know how it happened).


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1280 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
psychon
2008-12-06 14:49:56 +00:00
parent da4181617e
commit e6007747d7

View File

@@ -200,9 +200,19 @@ bool CFile::Copy(const CString& sOldFileName, const CString& sNewFileName, bool
}
char szBuf[8192];
unsigned int len = 0;
int len = 0;
while ((len = OldFile.Read(szBuf, 8192))) {
if (len < 0) {
DEBUG_ONLY(cout << "CFile::Copy() failed: " << strerror(errno);)
OldFile.Close();
// That file is only a partial copy, get rid of it
NewFile.Close();
NewFile.Delete();
return false;
}
NewFile.Write(szBuf, len);
}