summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qfile.h2
-rw-r--r--src/corelib/io/qfsfileengine.cpp10
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp2
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;
}