[arch-commits] Commit in nepomuk-core/kde-unstable (PKGBUILD fix-segfault.patch)
Andrea Scarpino
andrea at archlinux.org
Sat Dec 29 17:22:12 UTC 2012
Date: Saturday, December 29, 2012 @ 12:22:11
Author: andrea
Revision: 173953
upgpkg: nepomuk-core 4.9.95-2
Fix the nepomukindexer segfault when indexing JPEG files
Added:
nepomuk-core/kde-unstable/fix-segfault.patch
Modified:
nepomuk-core/kde-unstable/PKGBUILD
--------------------+
PKGBUILD | 15 +++-
fix-segfault.patch | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 200 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2012-12-29 16:02:27 UTC (rev 173952)
+++ PKGBUILD 2012-12-29 17:22:11 UTC (rev 173953)
@@ -3,17 +3,24 @@
pkgname=nepomuk-core
pkgver=4.9.95
-pkgrel=1
+pkgrel=2
pkgdesc="Contains the central Nepomuk services like file indexing, file system monitoring, query, storage, client libraries"
url="https://projects.kde.org/projects/kde/kdelibs/nepomuk-core"
arch=('i686' 'x86_64')
license=('GPL' 'LGPL' 'FDL')
depends=('kdelibs' 'poppler-qt' 'taglib' 'ffmpeg')
makedepends=('cmake' 'automoc4' 'doxygen')
-source=("http://download.kde.org/unstable/${pkgver}/src/${pkgname}-${pkgver}.tar.xz")
-sha1sums=('98bee83019e469e28772da24cbec05d7744e6e44')
+source=("http://download.kde.org/unstable/${pkgver}/src/${pkgname}-${pkgver}.tar.xz"
+ 'fix-segfault.patch')
+sha1sums=('98bee83019e469e28772da24cbec05d7744e6e44'
+ 'de0588164a4ae3ea89278675564a55e7e78ae4aa')
build() {
+ cd ${pkgname}-${pkgver}
+ # KDEBUG#312148
+ patch -p1 -i "${srcdir}"/fix-segfault.patch
+ cd ../
+
mkdir build
cd build
cmake ../${pkgname}-${pkgver} \
@@ -30,3 +37,5 @@
sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \
"${pkgdir}"/usr/bin/nepomuk-simpleresource-rcgen
}
+sha1sums=('98bee83019e469e28772da24cbec05d7744e6e44'
+ 'cfb1420dee81922e13952f81c0dde3450e99cf02')
Added: fix-segfault.patch
===================================================================
--- fix-segfault.patch (rev 0)
+++ fix-segfault.patch 2012-12-29 17:22:11 UTC (rev 173953)
@@ -0,0 +1,188 @@
+--- a/services/fileindexer/indexer/exiv2extractor.cpp
++++ b/services/fileindexer/indexer/exiv2extractor.cpp
+@@ -63,19 +63,45 @@
+ }
+
+ namespace {
++ QString toString(const Exiv2::Value& value) {
++ std::string str = value.toString();
++ return QString::fromUtf8( str.c_str(), str.length() );
++ }
++
+ QVariant toVariantLong(const Exiv2::Value& value) {
+- qlonglong l = value.toLong();
+- return QVariant(l);
++ if( value.typeId() == Exiv2::unsignedLong || value.typeId() == Exiv2::signedLong ) {
++ qlonglong val = value.toLong();
++ return QVariant( val );
++ }
++
++ QString str( toString(value) );
++ bool ok = false;
++ int val = str.toInt(&ok);
++ if( ok )
++ return QVariant( val );
++
++ return QVariant();
+ }
+
+ QVariant toVariantFloat(const Exiv2::Value& value) {
+- double f = value.toFloat();
+- return QVariant(f);
++ if( value.typeId() == Exiv2::tiffFloat || value.typeId() == Exiv2::tiffDouble )
++ return QVariant( value.toFloat() );
++
++ QString str( toString(value) );
++ bool ok = false;
++ float val = str.toFloat(&ok);
++ if( ok )
++ return QVariant( val );
++
++ return QVariant();
+ }
+
+ QVariant toVariantString(const Exiv2::Value& value) {
+- std::string str = value.toString();
+- return QVariant( QString::fromUtf8( str.c_str(), str.length() ) );
++ QString str = toString(value);
++ if( !str.isEmpty() )
++ return QVariant( str );
++
++ return QVariant();
+ }
+ }
+
+@@ -122,27 +148,37 @@
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.Flash") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::flash(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::flash(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.PixelXDimension") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NFO::width(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NFO::width(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.PixelYDimension") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NFO::height(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NFO::height(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Image.Make") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::make(), toVariantString( it->value() ) );
++ QVariant value = toVariantString( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::make(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Image.Model") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::model(), toVariantString( it->value() ) );
++ QVariant value = toVariantString( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::model(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Image.DateTime") );
+@@ -153,57 +189,79 @@
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Image.Orientation") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::orientation(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::orientation(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.FocalLength") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::focalLength(), toVariantFloat( it->value() ) );
++ QVariant value = toVariantFloat( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::focalLength(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.FocalLengthIn35mmFilm") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::focalLengthIn35mmFilm(), toVariantFloat( it->value() ) );
++ QVariant value = toVariantFloat( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::focalLengthIn35mmFilm(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.ExposureTime") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::exposureTime(), toVariantFloat( it->value() ) );
++ QVariant value = toVariantFloat( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::exposureTime(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.ApertureValue") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::apertureValue(), toVariantFloat( it->value() ) );
++ QVariant value = toVariantFloat( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::apertureValue(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.ExposureBiasValue") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::exposureBiasValue(), toVariantFloat( it->value() ) );
++ QVariant value = toVariantFloat( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::exposureBiasValue(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.WhiteBalance") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::whiteBalance(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::whiteBalance(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.MeteringMode") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::meteringMode(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::meteringMode(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.ISOSpeedRatings") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::isoSpeedRatings(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::isoSpeedRatings(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.Saturation") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::saturation(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::saturation(), value );
+ }
+
+ it = data.findKey( Exiv2::ExifKey("Exif.Photo.Sharpness") );
+ if( it != data.end() ) {
+- fileRes.setProperty( NEXIF::sharpness(), toVariantLong( it->value() ) );
++ QVariant value = toVariantLong( it->value() );
++ if( !value.isNull() )
++ fileRes.setProperty( NEXIF::sharpness(), value );
+ }
+
+ fileRes.addType( NEXIF::Photo() );
More information about the arch-commits
mailing list