Accepting request 859203 from KDE:Qt:5.15

- Add patch to avoid excessive use of memory by lconvert:
  * 0001-Fix-allocated-memory-of-QByteArray.patch

OBS-URL: https://build.opensuse.org/request/show/859203
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=115
This commit is contained in:
Dominique Leuenberger 2020-12-30 16:12:11 +00:00 committed by Git OBS Bridge
commit d503f99535
3 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,49 @@
From 6485b6d45ad165cf976138cf8ab683c42515e794 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@qt.io>
Date: Tue, 13 Oct 2020 15:47:31 +0200
Subject: [PATCH] Fix allocated memory of QByteArray returned by QIODevice::readLine
If the maxSize argument is 0 (the default), QIODevice::readLine will
allocate a QByteArray with the size of the next chunk of data, which
may be quite large. Before returning, it then resizes the byte array
to the actual size that was read.
But since change 6b884d2aa129, QByteArray::resize() does no
longer shrink the capacity. This means that the returned QByteArray
keeps it's maximum size as allocated memory. This can lead to
excessive memory consumption, especially if the returned QByteArray's
are stored for further processing in the client code.
Fix this by explicitly calling QByteArray::squeeze() before returning.
[ChangeLog][QtCore][QIODevice] Fixes a regression in Qt 5.15 causing
QByteArray's that are returned by QIODevice::readLine() to
consume large amounts of memory.
Fixes: QTBUG-87010
Change-Id: I1f95fc4098849e900680fc945238bfeda881022c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 263b29eedb223dec1ecaee193302070af87a1852,
limited squeeze() call if bytes are actually read to preserve retVal.isNull()
behavior in 5.15)
---
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index cc1d110..0f11c2e 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -1480,10 +1480,12 @@
} else
readBytes = readLine(result.data(), result.size());
- if (readBytes <= 0)
+ if (readBytes <= 0) {
result.clear();
- else
+ } else {
result.resize(readBytes);
+ result.squeeze();
+ }
return result;
}

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Tue Dec 29 11:48:35 UTC 2020 - Arjen de Korte <suse+build@de-korte.org>
- Add patch to avoid excessive use of memory by lconvert:
* 0001-Fix-allocated-memory-of-QByteArray.patch
-------------------------------------------------------------------
Fri Nov 20 12:08:44 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>

View File

@ -70,6 +70,8 @@ Patch12: 0001-Add-remote-print-queue-support.patch
Patch21: 0001-Don-t-white-list-recent-Mesa-versions-for-multithrea.patch
Patch24: fix-fixqt4headers.patch
# patches 1000-2000 and above from upstream 5.15 branch #
# Merged: https://bugreports.qt.io/browse/QTBUG-87010
Patch1000: 0001-Fix-allocated-memory-of-QByteArray.patch
# patches 2000-3000 and above from upstream qt6/dev branch #
# Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/255384
Patch2001: 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch