diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2024-11-06 20:46:03 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2024-11-06 20:51:44 +0100 |
commit | dd1d07066b493b813c2005138328f78f2194532c (patch) | |
tree | 878531dd549cce3ce65ae4f4935b509ae3593aae /app-editors | |
parent | kde-frameworks/ktexteditor: drop 6.7.0 (diff) | |
download | gentoo-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.patch | 175 | ||||
-rw-r--r-- | app-editors/ghostwriter/ghostwriter-24.08.2-r1.ebuild | 44 |
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 |