community/krita: fix crash with C locale

This commit is contained in:
Bart Ribbers 2020-04-11 18:11:04 +02:00 committed by Rasmus Thomsen
parent e383ff1baa
commit d77fbd5b3f
2 changed files with 81 additions and 3 deletions

View File

@ -2,14 +2,16 @@
# Maintainer: Bart Ribbers <bribbers@disroot.org>
pkgname=krita
pkgver=4.2.9
pkgrel=0
pkgrel=1
arch="all !armhf !mips !mips64" # Blocked by py3-qt5 -> qt5-qtdeclarative
url="https://krita.org/"
pkgdesc="Free digital painting application. Digital Painting, Creative Freedom!"
license="GPL-2.0-or-later"
makedepends="extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev qt5-qtmultimedia-dev qt5-qttools-dev kconfig-dev kwidgetsaddons-dev kcompletion-dev kcoreaddons-dev kguiaddons-dev ki18n-dev kitemmodels-dev kitemviews-dev kwindowsystem-dev karchive-dev kcrash-dev libxi-dev boost-dev libraw-dev fftw-dev eigen-dev exiv2-dev lcms2-dev quazip-dev gsl-dev zlib-dev openexr-dev tiff-dev libjpeg-turbo-dev giflib-dev libheif-dev python3-dev py3-qt5 poppler-qt5-dev xcb-util-dev"
checkdepends="xvfb-run"
source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.xz"
source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.xz
fix-crash-with-c-locale.patch
"
subpackages="$pkgname-lang"
options="!check" # Breaks compilation on Musl https://bugs.kde.org/show_bug.cgi?id=412058
@ -32,4 +34,5 @@ package() {
DESTDIR="$pkgdir" make -C build install
}
sha512sums="66eef3d1b5647e62551276662ef4332f15abc022f1032f27a2ad695a8d2dc5fa758146492a9da2b8cbd4a52e47c576473029d2aa9728dea3bec869b8173f08c0 krita-4.2.9.tar.xz"
sha512sums="66eef3d1b5647e62551276662ef4332f15abc022f1032f27a2ad695a8d2dc5fa758146492a9da2b8cbd4a52e47c576473029d2aa9728dea3bec869b8173f08c0 krita-4.2.9.tar.xz
e7a9117d012df4181e05de970f2210264b8685ee76c98b33795f8095d9a17b24b20e6ce920f944b4b5cb940cf672af5ba5fd0ffae9f53085a4f97da61b1e69f6 fix-crash-with-c-locale.patch"

View File

@ -0,0 +1,75 @@
From 3349c1dba99da9963eb275ae6ac7cdb8ed0c0e1b Mon Sep 17 00:00:00 2001
From: Boudewijn Rempt <boud@valdyas.org>
Date: Sat, 11 Apr 2020 16:33:09 +0200
Subject: [PATCH] Check whether the uiLanguages list isn't empty
Because Qt can crash or assert on list.first() if the list is
empty.
BUG:419947
---
krita/main.cc | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/krita/main.cc b/krita/main.cc
index e01fd10969..908f7abe03 100644
--- a/krita/main.cc
+++ b/krita/main.cc
@@ -334,7 +334,6 @@ extern "C" int main(int argc, char **argv)
qputenv("LANG", locale.name().toLocal8Bit());
#endif
-
const QStringList rtlLanguages = QStringList()
<< "ar" << "dv" << "he" << "ha" << "ku" << "fa" << "ps" << "ur" << "yi";
@@ -366,28 +365,30 @@ extern "C" int main(int argc, char **argv)
}
}
- QString envLanguage = uiLanguages.first();
- envLanguage.replace(QChar('-'), QChar('_'));
+ if (uiLanguages.size() > 0 ) {
+ QString envLanguage = uiLanguages.first();
+ envLanguage.replace(QChar('-'), QChar('_'));
- for (int i = 0; i < uiLanguages.size(); i++) {
- QString uiLanguage = uiLanguages[i];
- // Strip the country code
- int idx = uiLanguage.indexOf(QChar('-'));
+ for (int i = 0; i < uiLanguages.size(); i++) {
+ QString uiLanguage = uiLanguages[i];
+ // Strip the country code
+ int idx = uiLanguage.indexOf(QChar('-'));
- if (idx != -1) {
- uiLanguage = uiLanguage.left(idx);
- uiLanguages.replace(i, uiLanguage);
+ if (idx != -1) {
+ uiLanguage = uiLanguage.left(idx);
+ uiLanguages.replace(i, uiLanguage);
+ }
}
- }
- dbgKrita << "Converted ui languages:" << uiLanguages;
+ dbgKrita << "Converted ui languages:" << uiLanguages;
#ifdef Q_OS_MAC
- // See https://bugs.kde.org/show_bug.cgi?id=396370
- KLocalizedString::setLanguages(QStringList() << uiLanguages.first());
- qputenv("LANG", (envLanguage + ".UTF-8").toLocal8Bit());
+ // See https://bugs.kde.org/show_bug.cgi?id=396370
+ KLocalizedString::setLanguages(QStringList() << uiLanguages.first());
+ qputenv("LANG", (envLanguage + ".UTF-8").toLocal8Bit());
#else
- KLocalizedString::setLanguages(QStringList() << uiLanguages);
- qputenv("LANG", envLanguage.toLocal8Bit());
+ KLocalizedString::setLanguages(QStringList() << uiLanguages);
+ qputenv("LANG", envLanguage.toLocal8Bit());
#endif
+ }
}
}
--
2.26.0