forked from pool/libqt5-qtbase
Accepting request 859199 from home:adkorte:branches: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/859199 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt:5.15/libqt5-qtbase?expand=0&rev=20
This commit is contained in:
parent
7da8f6fd14
commit
3147699433
49
0001-Fix-allocated-memory-of-QByteArray.patch
Normal file
49
0001-Fix-allocated-memory-of-QByteArray.patch
Normal 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;
|
||||
}
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user