Skip to content

Commit

Permalink
kde-frameworks/kio: Fix memleak in slave jobs
Browse files Browse the repository at this point in the history
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=396651
Package-Manager: Portage-2.3.43, Repoman-2.3.10
  • Loading branch information
a17r committed Jul 21, 2018
1 parent 7473dc3 commit 744ce06
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 0 deletions.
65 changes: 65 additions & 0 deletions kde-frameworks/kio/files/kio-5.48.0-memleak.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
From 021daba60fafdf304b1079a705de900c431bb579 Mon Sep 17 00:00:00 2001
From: Jaime Torres <[email protected]>
Date: Sat, 21 Jul 2018 13:43:35 +0200
Subject: avoid memory leak in slave jobs

Summary:
Making ~SlaveInterface virtual, the connection created in Slave constructor is now deleted. (thanks @dfaure).
Changed to new connect syntax.

BUG: 396651

Test Plan:
The leaks of the bug report are gone.

Reviewers: dfaure, #frameworks, ngraham

Reviewed By: dfaure

Subscribers: anthonyfieroni, apol, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D14253
---
src/core/slave.cpp | 4 ++--
src/core/slaveinterface_p.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/slave.cpp b/src/core/slave.cpp
index 9402b44..7823d73 100644
--- a/src/core/slave.cpp
+++ b/src/core/slave.cpp
@@ -171,7 +171,7 @@ void Slave::accept()
d->slaveconnserver->deleteLater();
d->slaveconnserver = nullptr;

- connect(d->connection, SIGNAL(readyRead()), SLOT(gotInput()));
+ connect(d->connection, &Connection::readyRead, this, &Slave::gotInput);
}

void Slave::timeout()
@@ -218,7 +218,7 @@ Slave::Slave(const QString &protocol, QObject *parent)
Q_D(Slave);
d->slaveconnserver->setParent(this);
d->connection = new Connection(this);
- connect(d->slaveconnserver, SIGNAL(newConnection()), SLOT(accept()));
+ connect(d->slaveconnserver, &ConnectionServer::newConnection, this, &Slave::accept);
}

Slave::~Slave()
diff --git a/src/core/slaveinterface_p.h b/src/core/slaveinterface_p.h
index 4ed1f36..a4cb5d3 100644
--- a/src/core/slaveinterface_p.h
+++ b/src/core/slaveinterface_p.h
@@ -42,7 +42,7 @@ public:
nums(0), slave_calcs_speed(false)
{
}
- ~SlaveInterfacePrivate()
+ virtual ~SlaveInterfacePrivate()
{
delete connection;
}
--
cgit v0.11.2
81 changes: 81 additions & 0 deletions kde-frameworks/kio/kio-5.48.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

KDE_TEST="forceoptional"
VIRTUALX_REQUIRED="test"
inherit kde5

DESCRIPTION="Framework providing transparent file and data management"
LICENSE="LGPL-2+"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
IUSE="acl +handbook kerberos +kwallet X"

RDEPEND="
$(add_frameworks_dep kauth)
$(add_frameworks_dep karchive)
$(add_frameworks_dep kbookmarks)
$(add_frameworks_dep kcodecs)
$(add_frameworks_dep kcompletion)
$(add_frameworks_dep kconfig)
$(add_frameworks_dep kconfigwidgets)
$(add_frameworks_dep kcoreaddons)
$(add_frameworks_dep kdbusaddons)
$(add_frameworks_dep ki18n)
$(add_frameworks_dep kiconthemes)
$(add_frameworks_dep kitemviews)
$(add_frameworks_dep kjobwidgets)
$(add_frameworks_dep knotifications)
$(add_frameworks_dep kservice)
$(add_frameworks_dep ktextwidgets)
$(add_frameworks_dep kwidgetsaddons)
$(add_frameworks_dep kwindowsystem)
$(add_frameworks_dep kxmlgui)
$(add_frameworks_dep solid)
$(add_qt_dep qtdbus)
$(add_qt_dep qtgui)
$(add_qt_dep qtnetwork 'ssl')
$(add_qt_dep qtscript)
$(add_qt_dep qtwidgets)
$(add_qt_dep qtxml)
dev-libs/libxml2
dev-libs/libxslt
acl? (
sys-apps/attr
virtual/acl
)
handbook? ( $(add_frameworks_dep kdoctools) )
kerberos? ( virtual/krb5 )
kwallet? ( $(add_frameworks_dep kwallet) )
X? ( $(add_qt_dep qtx11extras) )
"
DEPEND="${RDEPEND}
$(add_qt_dep qtconcurrent)
test? ( sys-libs/zlib )
X? (
x11-base/xorg-proto
x11-libs/libX11
x11-libs/libXrender
)
"
PDEPEND="
$(add_frameworks_dep kded)
"

PATCHES=( "${FILESDIR}/${P}-memleak.patch" )

# tests hang
RESTRICT+=" test"

src_configure() {
local mycmakeargs=(
$(cmake-utils_use_find_package acl ACL)
$(cmake-utils_use_find_package handbook KF5DocTools)
$(cmake-utils_use_find_package kerberos GSSAPI)
$(cmake-utils_use_find_package kwallet KF5Wallet)
$(cmake-utils_use_find_package X X11)
)

kde5_src_configure
}

0 comments on commit 744ce06

Please sign in to comment.