author | Andrea Scarpino
<andrea@archlinux.org> 2014-05-05 17:50:08 UTC |
committer | Andrea Scarpino
<andrea@archlinux.org> 2014-05-05 17:50:08 UTC |
parent | 3218e4d1f762e72c348a3aa6568d18cc33cbff9c |
PKGBUILD | +9 | -4 |
krunner-crash.patch | +35 | -0 |
diff --git a/PKGBUILD b/PKGBUILD index 7490ac0..05bca1a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,7 +2,7 @@ pkgname=baloo pkgver=4.13.0 -pkgrel=1 +pkgrel=2 pkgdesc="A framework for searching and managing metadata" arch=('i686' 'x86_64') url='https://projects.kde.org/projects/kde/kdelibs/baloo' @@ -10,18 +10,23 @@ license=('LGPL') depends=('kdepimlibs' 'xapian-core' 'kfilemetadata') makedepends=('cmake' 'automoc4' 'boost') install=${pkgname}.install -source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.xz") -sha1sums=('ace3a80d3c0e3bb444ebe7f30392db791eab7c61') +source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.xz" + 'krunner-crash.patch') +sha1sums=('ace3a80d3c0e3bb444ebe7f30392db791eab7c61' + 'fdb37257dca64531559fdc2ddf4730582b9a009c') prepare() { mkdir build + + cd ${pkgname}-${pkgver} + patch -p1 -i "${srcdir}"/krunner-crash.patch } build() { cd build cmake ../${pkgname}-${pkgver} \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr + -DCMAKE_INSTALL_PREFIX=/usr make } diff --git a/krunner-crash.patch b/krunner-crash.patch new file mode 100644 index 0000000..733556d --- /dev/null +++ b/krunner-crash.patch @@ -0,0 +1,35 @@ +commit 5bdb32928dc3eabf482676bb039104d1137cf1fb +Author: Vishesh Handa <me@vhanda.in> +Date: Mon May 5 16:28:17 2014 +0200 + + XapianSearchStore: Split the string based on + * / - = + + When we receive a search string, we typically split it up by spaces and + dots. Then each sub string is checked, if it is <= 3 characters, we use + our own expansion scheme (imperfect) otherwise xapians. + + We need to use our own completion scheme because xapian's consumes too + much memory in the case of very few characters. It basically expands the + string to every possible completion result it has in its db, this + results in loads and loads of memory being consumed. + + We now split based on some extra characters so that when searching for + '2*2=' will not consume all your RAM in the case when your DB has many + words starting with 2. + + BUG: 332253 + FIXED-IN: 4.13.1 + +diff --git a/src/xapian/xapiansearchstore.cpp b/src/xapian/xapiansearchstore.cpp +index a0529ce..1a59e3e 100644 +--- a/src/xapian/xapiansearchstore.cpp ++++ b/src/xapian/xapiansearchstore.cpp +@@ -174,7 +174,7 @@ namespace { + Xapian::Query XapianSearchStore::constructSearchQuery(const QString& str) + { + QVector<Xapian::Query> queries; +- QRegExp splitRegex("[\\s.]"); ++ QRegExp splitRegex("[\\s.+*/\\-=]"); + QStringList list = str.split(splitRegex, QString::SkipEmptyParts); + + QMutableListIterator<QString> iter(list);