summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2017-08-26 22:54:33 +0300
committerOrgad Shaneh <orgads@gmail.com>2017-09-04 07:35:09 +0000
commitced0f54ec3c79ff4d3e6d8048ce7330d1e19f971 (patch)
tree6a6227433befaa9d285d9ffa8a95c86ce038192d /src/corelib/io
parent314a591461c58addd2805e0b4dc2cdb4308d5d31 (diff)
Fix resolution of relative links on Windows
[ChangeLog][QtCore][QFileInfo] Relative symbolic links on Windows are now resolved to their absolute path by symLinkTarget(). Task-number: QTBUG-62802 Change-Id: I5826517130bd389aef994bf3f4b6d99b2a91b409 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index 0542d9e16c..79407afefc 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -473,12 +473,17 @@ QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
if (data.missingFlags(QFileSystemMetaData::LinkType))
QFileSystemEngine::fillMetaData(link, data, QFileSystemMetaData::LinkType);
- QString ret;
+ QString target;
if (data.isLnkFile())
- ret = readLink(link);
+ target = readLink(link);
else if (data.isLink())
- ret = readSymLink(link);
- return QFileSystemEntry(ret);
+ target = readSymLink(link);
+ QFileSystemEntry ret(target);
+ if (!target.isEmpty() && ret.isRelative()) {
+ target.prepend(absoluteName(link).path() + QLatin1Char('/'));
+ ret = QFileSystemEntry(QDir::cleanPath(target));
+ }
+ return ret;
}
//static