summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/lib7z_facade.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-01-24 12:46:31 +0100
committerTim Jenssen <tim.jenssen@digia.com>2013-01-24 12:47:31 +0100
commit6bb6720df0976bcadbbf416e0f32d65faf7a33ae (patch)
treeb18b412cea738aa1b571ae516b98fc93b6bcf070 /src/libs/installer/lib7z_facade.cpp
parentf4f4e83740ab0217d04e14d025160a1497f96012 (diff)
Fix unexpected symlink link, triggered thru broken 7z code.
Change-Id: I6bb996d2b44b208137d5c1d1d558b42fb9cf7b43 Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src/libs/installer/lib7z_facade.cpp')
-rw-r--r--src/libs/installer/lib7z_facade.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libs/installer/lib7z_facade.cpp b/src/libs/installer/lib7z_facade.cpp
index 23e0f2775..e987c7571 100644
--- a/src/libs/installer/lib7z_facade.cpp
+++ b/src/libs/installer/lib7z_facade.cpp
@@ -796,6 +796,13 @@ public:
throw SevenZipException(QObject::tr("Could not create softlink at %1")
.arg(absFilePath));
}
+
+ // If we have a symlink, bail out after we have linked it to avoid deleting the link.
+ // CFileBase::Create(...) seems to broken in regard of symlink handling. If the link
+ // already exists, it simple does an unlink on it. So we can't set time values on the
+ // symlink in the following code, as COutFile::Open(...) calls former mentioned Create()
+ // function and thus the symlink is deleted.
+ return S_OK;
#endif
}
}