summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Ghinet <samuel.ghinet@qt.io>2023-05-05 15:10:00 +0300
committerTim Jenssen <tim.jenssen@qt.io>2023-05-08 01:40:47 +0000
commit4f11fae460edc7b26472f43e6f6f716bc6c589c3 (patch)
tree0e6ea9c0b912845800ea15ca5d09df1e5f0950af
parent524f45f56685d2931b247f76281d5065e450d186 (diff)
downloadqt-creator-4f11fae460edc7b26472f43e6f6f716bc6c589c3.tar.gz
QmlDesigner: Fix crash in FileExtractor when compressed size is 0
Task-number: QDS-9832 Change-Id: Ia096b5770359ea16171cae0634fea340264194e1 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/utils/fileextractor.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/utils/fileextractor.cpp b/src/plugins/qmldesigner/utils/fileextractor.cpp
index c6aa83fb7a..7c32381b69 100644
--- a/src/plugins/qmldesigner/utils/fileextractor.cpp
+++ b/src/plugins/qmldesigner/utils/fileextractor.cpp
@@ -51,7 +51,11 @@ FileExtractor::FileExtractor(QObject *parent)
// We can not get the uncompressed size of the archive yet, that is why we use an
// approximation. We assume a 50% compression rate.
- int progress = std::min(100ll, currentSize * 100 / m_compressedSize * 2);
+
+ int progress = 0;
+ if (m_compressedSize > 0)
+ progress = std::min(100ll, currentSize * 100 / m_compressedSize * 2);
+
if (progress >= 0) {
m_progress = progress;
emit progressChanged();
@@ -212,6 +216,8 @@ void FileExtractor::extract()
m_timer.start();
m_bytesBefore = QStorageInfo(m_targetPath.toFileInfo().dir()).bytesAvailable();
m_compressedSize = QFileInfo(m_sourceFile.toString()).size();
+ if (m_compressedSize <= 0)
+ qWarning() << "Compressed size for file '" << m_sourceFile << "' is zero or invalid: " << m_compressedSize;
QObject::connect(archive, &Utils::Archive::outputReceived, this, [this](const QString &output) {
m_detailedText += output;