summaryrefslogtreecommitdiff
path: root/src/corelib/io/qfilesystemengine_symbian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qfilesystemengine_symbian.cpp')
-rw-r--r--src/corelib/io/qfilesystemengine_symbian.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/io/qfilesystemengine_symbian.cpp b/src/corelib/io/qfilesystemengine_symbian.cpp
index c8c1dfdc84..d3e8f4d4fd 100644
--- a/src/corelib/io/qfilesystemengine_symbian.cpp
+++ b/src/corelib/io/qfilesystemengine_symbian.cpp
@@ -237,12 +237,19 @@ bool QFileSystemEngine::createDirectory(const QFileSystemEntry &entry, bool crea
if (!abspath.endsWith(QLatin1Char('\\')))
abspath.append(QLatin1Char('\\'));
TInt r;
+ TPtrC symPath(qt_QString2TPtrC(abspath));
if (createParents)
- r = qt_s60GetRFs().MkDirAll(qt_QString2TPtrC(abspath));
+ r = qt_s60GetRFs().MkDirAll(symPath);
else
- r = qt_s60GetRFs().MkDir(qt_QString2TPtrC(abspath));
+ r = qt_s60GetRFs().MkDir(symPath);
if (createParents && r == KErrAlreadyExists)
return true; //# Qt5 - QDir::mkdir returns false for existing dir, QDir::mkpath returns true (should be made consistent in Qt 5)
+ if (createParents && r == KErrPermissionDenied) {
+ // check for already exists, which is not returned from RFs when it denies permission
+ TEntry entry;
+ if (qt_s60GetRFs().Entry(symPath, entry) == KErrNone)
+ r = KErrNone;
+ }
return (r == KErrNone);
}