summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2024-11-06 20:46:03 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2024-11-06 20:51:44 +0100
commitdd1d07066b493b813c2005138328f78f2194532c (patch)
tree878531dd549cce3ce65ae4f4935b509ae3593aae /app-editors
parentkde-frameworks/ktexteditor: drop 6.7.0 (diff)
downloadgentoo-dd1d07066b493b813c2005138328f78f2194532c.tar.gz
gentoo-dd1d07066b493b813c2005138328f78f2194532c.tar.bz2
gentoo-dd1d07066b493b813c2005138328f78f2194532c.zip
app-editors/ghostwriter: Fix segfaults
See also: https://invent.kde.org/office/ghostwriter/-/merge_requests/46 KDE-bug: https://bugs.kde.org/show_bug.cgi?id=465799 Closes: https://bugs.gentoo.org/942928 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'app-editors')
-rw-r--r--app-editors/ghostwriter/files/ghostwriter-24.08.2-fix-segfault.patch175
-rw-r--r--app-editors/ghostwriter/ghostwriter-24.08.2-r1.ebuild44
2 files changed, 219 insertions, 0 deletions
diff --git a/app-editors/ghostwriter/files/ghostwriter-24.08.2-fix-segfault.patch b/app-editors/ghostwriter/files/ghostwriter-24.08.2-fix-segfault.patch
new file mode 100644
index 000000000000..5466e47a319e
--- /dev/null
+++ b/app-editors/ghostwriter/files/ghostwriter-24.08.2-fix-segfault.patch
@@ -0,0 +1,175 @@
+From bfca43e551729b9518772fed6fba19bb5dbe6646 Mon Sep 17 00:00:00 2001
+From: Megan Conkle <megan.conkle@kdemail.net>
+Date: Sat, 12 Oct 2024 23:34:27 -0700
+Subject: [PATCH] Fix segmentation fault when .conf file is missing
+
+Whenever ghostwriter.conf is missing (or the last used exporter within
+is empty), the app will crash with a segmentation fault due to accessing
+an uninitialed pointer to the current HTML exporter in appsettings.cpp.
+This commit ensures that the pointer is initialized to null before being
+checked for whether obtaining an exporter was successful.
+BUG: 465799
+
+(cherry picked from commit f82070ac7916b36bb0bfd84a5c0e96cb084a6e28)
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ CHANGELOG.md | 8 ++++++++
+ src/preview/htmlpreview.cpp | 24 ++++++++++++------------
+ src/settings/appsettings.cpp | 18 ++++++++++++------
+ 3 files changed, 32 insertions(+), 18 deletions(-)
+
+diff --git a/CHANGELOG.md b/CHANGELOG.md
+index 6f34002f..89017211 100644
+--- a/CHANGELOG.md
++++ b/CHANGELOG.md
+@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
+
+ ## [Unreleased]
+
++## [24.08.3]
++
++### Fixed
++
++* Issue #465799: Segmentation fault no longer occurs when .conf file is missing on first launch.
++
++## [24.08.0]
++
+ ### Added
+
+ * Added more icons to menu actions.
+diff --git a/src/preview/htmlpreview.cpp b/src/preview/htmlpreview.cpp
+index db89dd29..5a600769 100644
+--- a/src/preview/htmlpreview.cpp
++++ b/src/preview/htmlpreview.cpp
+@@ -1,5 +1,5 @@
+-/*
+- * SPDX-FileCopyrightText: 2014-2023 Megan Conkle <megan.conkle@kdemail.net>
++/*
++ * SPDX-FileCopyrightText: 2014-2024 Megan Conkle <megan.conkle@kdemail.net>
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+@@ -38,7 +38,7 @@ public:
+ HtmlPreviewPrivate(HtmlPreview *q_ptr)
+ : q_ptr(q_ptr)
+ {
+- ;
++ proxy = new PreviewProxy(q_ptr);
+ }
+
+ ~HtmlPreviewPrivate()
+@@ -51,7 +51,7 @@ public:
+ MarkdownDocument *document;
+ bool updateInProgress;
+ bool updateAgain;
+- PreviewProxy proxy;
++ PreviewProxy *proxy;
+ QString baseUrl;
+ QRegularExpression headingTagExp;
+ Exporter *exporter;
+@@ -91,7 +91,7 @@ HtmlPreview::HtmlPreview
+ d->updateInProgress = false;
+ d->updateAgain = false;
+ d->exporter = exporter;
+- d->proxy.setMathEnabled(d->exporter->supportsMath());
++ d->proxy->setMathEnabled(d->exporter->supportsMath());
+
+ d->baseUrl = "";
+
+@@ -153,7 +153,7 @@ HtmlPreview::HtmlPreview
+ this->setZoomFactor((horizontalDpi / 96.0));
+
+ QWebChannel *channel = new QWebChannel(this);
+- channel->registerObject(QStringLiteral("previewProxy"), &d->proxy);
++ channel->registerObject(QStringLiteral("previewProxy"), d->proxy);
+ this->page()->setWebChannel(channel);
+
+ QFile wrapperHtmlFile(":/resources/preview.html");
+@@ -240,22 +240,22 @@ void HtmlPreview::setHtmlExporter(Exporter *exporter)
+
+ d->exporter = exporter;
+ d->setHtmlContent("");
+- d->proxy.setMathEnabled(d->exporter->supportsMath());
++ d->proxy->setMathEnabled(d->exporter->supportsMath());
+ updatePreview();
+ }
+
+ void HtmlPreview::setStyleSheet(const QString &css)
+ {
+ Q_D(HtmlPreview);
+-
+- d->proxy.setStyleSheet(css);
++
++ d->proxy->setStyleSheet(css);
+ }
+
+ void HtmlPreview::setMathEnabled(bool enabled)
+ {
+ Q_D(HtmlPreview);
+-
+- d->proxy.setMathEnabled(enabled);
++
++ d->proxy->setMathEnabled(enabled);
+ }
+
+ void HtmlPreviewPrivate::onHtmlReady()
+@@ -312,7 +312,7 @@ void HtmlPreview::closeEvent(QCloseEvent *event)
+
+ void HtmlPreviewPrivate::setHtmlContent(const QString &html)
+ {
+- this->proxy.setHtmlContent(html);
++ this->proxy->setHtmlContent(html);
+ }
+
+ QString HtmlPreviewPrivate::exportToHtml
+diff --git a/src/settings/appsettings.cpp b/src/settings/appsettings.cpp
+index a76c25a5..7d51ac5d 100644
+--- a/src/settings/appsettings.cpp
++++ b/src/settings/appsettings.cpp
+@@ -65,6 +65,7 @@ public:
+ static AppSettings *instance;
+
+ AppSettingsPrivate()
++ : currentHtmlExporter(nullptr)
+ {
+ ;
+ }
+@@ -677,6 +678,7 @@ void AppSettings::setShowUnbreakableSpaceEnabled(bool enabled)
+ d->showUnbreakableSpaceEnabled = enabled;
+ emit showUnbreakableSpaceEnabledChanged(d->showUnbreakableSpaceEnabled);
+ }
++
+ AppSettings::AppSettings()
+ : d_ptr(new AppSettingsPrivate())
+ {
+@@ -843,17 +845,21 @@ AppSettings::AppSettings()
+
+ QString exporterName = appSettings.value(constants::GW_LAST_USED_EXPORTER_KEY).toString();
+
++ d->currentHtmlExporter = nullptr;
++
+ if (!exporterName.isEmpty()) {
+ d->currentHtmlExporter = ExporterFactory::instance()->exporterByName(exporterName);
+- }
+
+- if (d->currentHtmlExporter) {
+- auto lastExportOptions = appSettings.value(constants::GW_LAST_USED_EXPORTER_PARAMS_KEY).toString();
++ if (d->currentHtmlExporter) {
++ auto lastExportOptions = appSettings.value(constants::GW_LAST_USED_EXPORTER_PARAMS_KEY).toString();
+
+- if (!lastExportOptions.isEmpty()) {
+- d->currentHtmlExporter->setOptions(lastExportOptions);
++ if (!lastExportOptions.isEmpty()) {
++ d->currentHtmlExporter->setOptions(lastExportOptions);
++ }
+ }
+- } else {
++ }
++
++ if (!d->currentHtmlExporter) {
+ d->currentHtmlExporter = ExporterFactory::instance()->htmlExporters().first();
+ }
+ }
+--
+GitLab
+
diff --git a/app-editors/ghostwriter/ghostwriter-24.08.2-r1.ebuild b/app-editors/ghostwriter/ghostwriter-24.08.2-r1.ebuild
new file mode 100644
index 000000000000..85e2aa731416
--- /dev/null
+++ b/app-editors/ghostwriter/ghostwriter-24.08.2-r1.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+KDE_ORG_CATEGORY="office"
+ECM_HANDBOOK="optional"
+KFMIN=6.5.0
+QTMIN=6.7.2
+inherit ecm gear.kde.org
+
+DESCRIPTION="Cross-platform, aesthetic, distraction-free markdown editor"
+HOMEPAGE="https://ghostwriter.kde.org/"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE=""
+
+RDEPEND="
+ app-text/hunspell:=
+ >=dev-qt/qtbase-${QTMIN}:6[gui,widgets]
+ >=dev-qt/qtsvg-${QTMIN}:6
+ >=dev-qt/qtwebchannel-${QTMIN}:6
+ >=dev-qt/qtwebengine-${QTMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:6
+ >=kde-frameworks/kxmlgui-${KFMIN}:6
+ >=kde-frameworks/sonnet-${KFMIN}:6
+ virtual/opengl
+"
+DEPEND="${RDEPEND}
+ >=dev-qt/qtbase-${QTMIN}:6[concurrent]
+"
+BDEPEND="
+ >=dev-qt/qttools-${QTMIN}:6[linguist]
+ virtual/pkgconfig
+"
+
+DOCS=( CHANGELOG.md README.md )
+
+# Picked for 24.08.3, hopefully to be respun:
+# https://invent.kde.org/office/ghostwriter/-/merge_requests/46
+PATCHES=( "${FILESDIR}/${P}-fix-segfault.patch" ) # bug 942928