From be01a861b867a0511195839e14e57baa789750ce Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Fri, 19 Dec 2025 13:58:38 -0300 Subject: [PATCH] Fix crash when importing compressed zip files The bug was introduced by #4751 when QScopedPointer was replaced by std::unique_ptr but release() was not called to replace take(). --- contrib/qzip/zip.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/qzip/zip.cpp b/contrib/qzip/zip.cpp index 8a6e2ea08..ee1acb002 100644 --- a/contrib/qzip/zip.cpp +++ b/contrib/qzip/zip.cpp @@ -514,7 +514,7 @@ void ZipReaderPrivate::scanFiles() int num_dir_entries = 0; EndOfDirectory eod; while (start_of_directory == -1) { - int pos = device->size() - sizeof(EndOfDirectory) - i; + size_t pos = device->size() - sizeof(EndOfDirectory) - i; if (pos < 0 || i > 65535) { qWarning() << "QZip: EndOfDirectory not found"; return; @@ -755,7 +755,7 @@ ZipReader::ZipReader(const QString &archive, QIODevice::OpenMode mode) status = FileError; } - d = new ZipReaderPrivate(&(*f), /*ownDevice=*/true); + d = new ZipReaderPrivate(&(*f.release()), /*ownDevice=*/true); d->status = status; } @@ -1039,7 +1039,7 @@ ZipWriter::ZipWriter(const QString &fileName, QIODevice::OpenMode mode) status = ZipWriter::FileError; } - d = new ZipWriterPrivate(&(*f), /*ownDevice=*/true); + d = new ZipWriterPrivate(&(*f.release()), /*ownDevice=*/true); d->status = status; }