summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/libarchivearchive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/libarchivearchive.cpp')
-rw-r--r--src/libs/installer/libarchivearchive.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libs/installer/libarchivearchive.cpp b/src/libs/installer/libarchivearchive.cpp
index 156a84d26..4573da2b1 100644
--- a/src/libs/installer/libarchivearchive.cpp
+++ b/src/libs/installer/libarchivearchive.cpp
@@ -426,8 +426,11 @@ bool ExtractWorker::writeEntry(archive *reader, archive *writer, archive_entry *
forever {
status = archive_read_data_block(reader, &buff, &size, &offset);
- if (status == ARCHIVE_EOF)
- return true;
+ if (status == ARCHIVE_EOF) {
+ status = archive_write_finish_entry(writer);
+ if (status == ARCHIVE_OK)
+ return true;
+ }
if (status != ARCHIVE_OK) {
m_status = Failure;
emit finished(tr("Cannot write entry \"%1\" to disk: %2")
@@ -1064,8 +1067,11 @@ bool LibArchiveArchive::writeEntry(archive *reader, archive *writer, archive_ent
forever {
status = archive_read_data_block(reader, &buff, &size, &offset);
- if (status == ARCHIVE_EOF)
- return true;
+ if (status == ARCHIVE_EOF) {
+ status = archive_write_finish_entry(writer);
+ if (status == ARCHIVE_OK)
+ return true;
+ }
if (status != ARCHIVE_OK) {
setErrorString(errorStringWithCode(reader));
return false;