summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qtemporaryfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qtemporaryfile.cpp')
-rw-r--r--src/corelib/io/qtemporaryfile.cpp9
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;
}