diff options
Diffstat (limited to 'src/libs/installer/libarchivearchive.cpp')
-rw-r--r-- | src/libs/installer/libarchivearchive.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libs/installer/libarchivearchive.cpp b/src/libs/installer/libarchivearchive.cpp index 0990706bf..9f88adb27 100644 --- a/src/libs/installer/libarchivearchive.cpp +++ b/src/libs/installer/libarchivearchive.cpp @@ -29,6 +29,7 @@ #include "libarchivearchive.h" #include "directoryguard.h" +#include "fileguard.h" #include "errors.h" #include "globals.h" @@ -409,6 +410,11 @@ bool ExtractWorker::writeEntry(archive *reader, archive *writer, archive_entry * size_t size; int64_t offset; + const QString entryPath = ArchiveEntryPaths::callWithSystemLocale + <QString>(ArchiveEntryPaths::pathname, entry); + + FileGuardLocker locker(entryPath, FileGuard::globalObject()); + status = archive_write_header(writer, entry); if (status != ARCHIVE_OK) { emit finished(LibArchiveArchive::errorStringWithCode(writer)); @@ -1015,6 +1021,11 @@ bool LibArchiveArchive::writeEntry(archive *reader, archive *writer, archive_ent size_t size; int64_t offset; + const QString entryPath = ArchiveEntryPaths::callWithSystemLocale + <QString>(ArchiveEntryPaths::pathname, entry); + + FileGuardLocker locker(entryPath, FileGuard::globalObject()); + status = archive_write_header(writer, entry); if (status != ARCHIVE_OK) { setErrorString(errorStringWithCode(writer)); |