Date: Tue, 20 Apr 2021 14:28:04 GMT From: Adriaan de Groot <adridg@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: b78f03b4ef2f - main - graphics/spectacle: avoid crash with export-plugins Message-ID: <202104201428.13KES4BX025484@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by adridg: URL: https://cgit.FreeBSD.org/ports/commit/?id=b78f03b4ef2f26ef43581af81bcb274e7b32558b commit b78f03b4ef2f26ef43581af81bcb274e7b32558b Author: Adriaan de Groot <adridg@FreeBSD.org> AuthorDate: 2021-04-20 14:23:01 +0000 Commit: Adriaan de Groot <adridg@FreeBSD.org> CommitDate: 2021-04-20 14:28:03 +0000 graphics/spectacle: avoid crash with export-plugins This is upstream MR https://invent.kde.org/graphics/spectacle/-/merge_requests/61 and avoids crashes when clicking almost any entry in the *export* menu. PR: 252313 --- graphics/spectacle/Makefile | 1 + ...t-f123cf6b1b67519a1a4e82e69764da9e89716489.diff | 52 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/graphics/spectacle/Makefile b/graphics/spectacle/Makefile index 92890a1ce365..5fa9db8075d5 100644 --- a/graphics/spectacle/Makefile +++ b/graphics/spectacle/Makefile @@ -1,5 +1,6 @@ PORTNAME= spectacle DISTVERSION= ${KDE_APPLICATIONS_VERSION} +PORTREVISION= 1 CATEGORIES= graphics kde kde-applications MAINTAINER= kde@FreeBSD.org diff --git a/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff b/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff new file mode 100644 index 000000000000..379a3e90b1ed --- /dev/null +++ b/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff @@ -0,0 +1,52 @@ +commit f123cf6b1b67519a1a4e82e69764da9e89716489 +Author: Adriaan de Groot <groot@kde.org> +Date: Tue Apr 20 14:28:33 2021 +0200 + + Fix crash in all(?) KIPI export plugins + + Scenario: + - start spectacle, take a screenshot, click *export* drop-down + and pick *imageshack* or *remote storage* (or most of the + others) + - spectacle crashes + + Valgrind: + ==60783== Invalid read of size 8 + ==60783== at 0x48A149A: KIPI::PluginLoader::interface() const (invent/libkipi/src/pluginloader.cpp:385) + ==60783== by 0x14DB111A: KIPIRemoteStoragePlugin::Plugin_RemoteStorage::slotActivateExport() (invent/kipi-plugins/remotestorage/plugin_remotestorage.cpp:122) + ==60783== Address 0xc6d28b0 is 16 bytes inside a block of size 24 free'd + ==60783== at 0x484CBAC: operator delete(void*) (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) + ==60783== by 0x247CAB: ExportMenu::getKipiItems() (invent/spectacle/src/Gui/ExportMenu.cpp:164) +diff --git src/Gui/ExportMenu.cpp src/Gui/ExportMenu.cpp +index 66490dc..92eafa0 100644 +--- src/Gui/ExportMenu.cpp ++++ src/Gui/ExportMenu.cpp +@@ -120,7 +120,19 @@ void ExportMenu::getKipiItems() + mKipiMenu->clear(); + + mKipiInterface = new KSGKipiInterface(this); +- KIPI::PluginLoader *loader = new KIPI::PluginLoader; ++ ++ KIPI::PluginLoader *loader = KIPI::PluginLoader::instance(); ++ if (!loader) ++ { ++ // The loader needs to live at least as long as the plugins ++ // loaded through it, since the plugins use the loader's ++ // interface() call to get the KIPI interface they conform to. ++ // ++ // ASAN may complain about a leak here, because this loader ++ // pointer goes out of scope, but it is kept around in ++ // the PluginLoader's static instance() ++ loader = new KIPI::PluginLoader; ++ } + + loader->setInterface(mKipiInterface); + loader->init(); +@@ -161,7 +173,6 @@ void ExportMenu::getKipiItems() + if (mKipiMenu->isEmpty()) { + mKipiMenu->addAction(i18n("No KIPI plugins available"))->setEnabled(false); + } +- delete loader; + } + #endif +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104201428.13KES4BX025484>