diff options
Diffstat (limited to 'src/corelib/io/qtemporaryfile.cpp')
-rw-r--r-- | src/corelib/io/qtemporaryfile.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index d3a6e3c238..c2f421843c 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -160,7 +160,14 @@ static bool createFileFromTemplate(NativeFileHandle &file, return true; DWORD err = GetLastError(); - if (err != ERROR_FILE_EXISTS) { + if (err == ERROR_ACCESS_DENIED) { + DWORD attributes = GetFileAttributes((const wchar_t *)path.constData()); + if (attributes == INVALID_FILE_ATTRIBUTES) { + // Potential write error (read-only parent directory, etc.). + error = QSystemError(err, QSystemError::NativeError); + return false; + } // else file already exists as a directory. + } else if (err != ERROR_FILE_EXISTS) { error = QSystemError(err, QSystemError::NativeError); return false; } |