summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRitt Konstantin <ritt.ks@gmail.com>2010-03-23 14:03:24 (GMT)
committerJoão Abecasis <joao@trolltech.com>2010-03-23 14:06:07 (GMT)
commitb4996ab8e3a26d45ee55593da281e4b798c04dd2 (patch)
tree431213deec68adccd6c3613b23f61074754b4881 /src
parent3fbedcd085b3e89e3646bf49264001ee216c5852 (diff)
downloadQt-b4996ab8e3a26d45ee55593da281e4b798c04dd2.zip
Qt-b4996ab8e3a26d45ee55593da281e4b798c04dd2.tar.gz
Qt-b4996ab8e3a26d45ee55593da281e4b798c04dd2.tar.bz2
QFSFileEngine: don't look through NTFS junctions
Starting in 1216161584b730576c24fb128131838be1826b37, we started processing NTFS junctions as symbolic link. This reverts isSymlink() behavior back to former behavior and processes only symbolic junctions. The code path there worked just fine for directory symbolic links but lead to multiple issues for volume mount point junctions due to incompleteness. Task-number: QTBUG-7036, QTBUG-7384 Merge-request: 493 Reviewed-by: João Abecasis <joao@trolltech.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 9fc8dc3..eeca07e 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -1275,12 +1275,7 @@ static QString readSymLink(const QString &link)
REPARSE_DATA_BUFFER *rdb = (REPARSE_DATA_BUFFER*)qMalloc(bufsize);
DWORD retsize = 0;
if (::DeviceIoControl(handle, FSCTL_GET_REPARSE_POINT, 0, 0, rdb, bufsize, &retsize, 0)) {
- if (rdb->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
- int length = rdb->MountPointReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
- int offset = rdb->MountPointReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
- const wchar_t* PathBuffer = &rdb->MountPointReparseBuffer.PathBuffer[offset];
- result = QString::fromWCharArray(PathBuffer, length);
- } else {
+ if (rdb->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
int length = rdb->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
int offset = rdb->SymbolicLinkReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
const wchar_t* PathBuffer = &rdb->SymbolicLinkReparseBuffer.PathBuffer[offset];
@@ -1543,8 +1538,7 @@ bool QFSFileEnginePrivate::isSymlink() const
if (hFind != INVALID_HANDLE_VALUE) {
::FindClose(hFind);
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
- && (findData.dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT
- || findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) {
+ && findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK) {
is_link = true;
}
}