Date: Wednesday, January 3, 2018 @ 09:23:06 Author: arojas Revision: 278146
Fix segfault with Qt 5.10 (FS#56932) Added: kphotoalbum/trunk/kphotoalbum-qt-5.10.patch Modified: kphotoalbum/trunk/PKGBUILD ---------------------------+ PKGBUILD | 13 +++++++++--- kphotoalbum-qt-5.10.patch | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2018-01-03 09:21:43 UTC (rev 278145) +++ PKGBUILD 2018-01-03 09:23:06 UTC (rev 278146) @@ -7,7 +7,7 @@ pkgname=kphotoalbum pkgver=5.2 -pkgrel=2 +pkgrel=3 pkgdesc="KDE Photo Album, picture collection manager" url="https://www.kphotoalbum.org/" arch=('x86_64') @@ -15,9 +15,16 @@ depends=('libkipi' 'libkdcraw' 'libkgeomap' 'exiv2') makedepends=('extra-cmake-modules' 'python' 'plasma-framework' 'phonon-qt5' 'kdoctools' 'kparts' 'libkexiv2') optdepends=() -source=("https://download.kde.org/stable/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.xz") -sha256sums=('9ad02080b21787d5824d0c4bb49be2a00822098adca7937e9c7497440d3b0b89') +source=("https://download.kde.org/stable/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.xz" + kphotoalbum-qt-5.10.patch) +sha256sums=('9ad02080b21787d5824d0c4bb49be2a00822098adca7937e9c7497440d3b0b89' + '67efc8339a9754f28f5a438510b3f2b114dd9cc07ecc34e75c0e1aa72f1a6b80') +prepare() { + cd $pkgname-$pkgver + patch -p1 -i ../kphotoalbum-qt-5.10.patch # Fix crash with Qt 5.10 +} + build() { mkdir build cd build Added: kphotoalbum-qt-5.10.patch =================================================================== --- kphotoalbum-qt-5.10.patch (rev 0) +++ kphotoalbum-qt-5.10.patch 2018-01-03 09:23:06 UTC (rev 278146) @@ -0,0 +1,45 @@ +From 211f74bec0101d56714787b3a722e7f324ce2ae2 Mon Sep 17 00:00:00 2001 +From: Sylvain Stanchina <sylv...@stanchina.fr> +Date: Mon, 1 Jan 2018 21:57:32 +0100 +Subject: Fix crash with prepared SQL queries on Qt 5.10. + +Some explanations: The issue is related to SQL queries containing +placeholders ("?"). In Exif.Database.cpp, some queries are built using +the statement "QSqlQuery query( _queryString, m_db );" (or equivalent). +However, according to QT5.10 documentation, the queries are immediately +executed when constructed like that. If they contain one or more +placeholders "?", they are thus executed before their arguments have +been bound (by calls of bindValue()). In such cases, the application +crashes. +--- + Exif/Database.cpp | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/Exif/Database.cpp b/Exif/Database.cpp +index 1cc14c3..10747d2 100644 +--- a/Exif/Database.cpp ++++ b/Exif/Database.cpp +@@ -226,7 +226,8 @@ void Exif::Database::remove( const DB::FileName& fileName ) + if ( !isUsable() ) + return; + +- QSqlQuery query( QString::fromLatin1( "DELETE FROM exif WHERE fileName=?" ), m_db ); ++ QSqlQuery query( m_db); ++ query.prepare( QString::fromLatin1( "DELETE FROM exif WHERE fileName=?" )); + query.bindValue( 0, fileName.absolute() ); + if ( !query.exec() ) + showError( query ); +@@ -248,8 +251,8 @@ bool Exif::Database::insert(const DB::FileName& filename, Exiv2::ExifData data ) + } + _queryString = QString::fromLatin1( "INSERT OR REPLACE into exif values (?, %1) " ).arg( formalList.join( QString::fromLatin1( ", " ) ) ); + } +- +- QSqlQuery query( _queryString, m_db ); ++ QSqlQuery query(m_db); ++ query.prepare( _queryString ); + query.bindValue( 0, filename.absolute() ); + int i = 1; + for( const DatabaseElement *e : elements() ) +-- +cgit v0.11.2 +