diff options
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qfile.h | 2 | ||||
-rw-r--r-- | src/corelib/io/qfsfileengine.cpp | 10 | ||||
-rw-r--r-- | src/corelib/io/qfsfileengine_win.cpp | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/corelib/io/qfile.h b/src/corelib/io/qfile.h index b52780d..f65c845 100644 --- a/src/corelib/io/qfile.h +++ b/src/corelib/io/qfile.h @@ -116,7 +116,7 @@ public: static QByteArray encodeName(const QString &fileName); static QString decodeName(const QByteArray &localFileName); inline static QString decodeName(const char *localFileName) - { return decodeName(QByteArray(localFileName)); }; + { return decodeName(QByteArray(localFileName)); } static void setEncodingFunction(EncoderFn); static void setDecodingFunction(DecoderFn); diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index b779aa3..fb096a7 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -157,7 +157,15 @@ QString QFSFileEnginePrivate::canonicalized(const QString &path) #endif separatorPos = tmpPath.indexOf(slash, separatorPos + 1); QString prefix = separatorPos == -1 ? tmpPath : tmpPath.left(separatorPos); - if (!nonSymlinks.contains(prefix)) { + if ( +#ifdef Q_OS_SYMBIAN + // Symbian doesn't support directory symlinks, so do not check for link unless we + // are handling the last path element. This not only slightly improves performance, + // but also saves us from lot of unnecessary platform security check failures + // when dealing with files under *:/private directories. + separatorPos == -1 && +#endif + !nonSymlinks.contains(prefix)) { fi.setFile(prefix); if (fi.isSymLink()) { QString target = fi.symLinkTarget(); diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index 763589a..898447c 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -1954,7 +1954,7 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size, #endif if (handle == INVALID_HANDLE_VALUE) { - q->setError(QFile::UnspecifiedError, QLatin1String("No handle on file")); + q->setError(QFile::PermissionsError, qt_error_string(ERROR_ACCESS_DENIED)); return 0; } |