[recoll] add patch from upstream to fix crash.

terjeros terjeros at fedoraproject.org
Tue May 24 06:53:20 UTC 2011


commit 880b616f74c6fcdb95ec38b838521ae514984536
Author: Terje Røsten <terje.rosten at ntnu.no>
Date:   Tue May 24 08:53:06 2011 +0200

    add patch from upstream to fix crash.

 recoll-1.15.8-static-fix.patch |  259 ++++++++++++++++++++++++++++++++++++++++
 recoll.spec                    |    7 +-
 2 files changed, 265 insertions(+), 1 deletions(-)
---
diff --git a/recoll-1.15.8-static-fix.patch b/recoll-1.15.8-static-fix.patch
new file mode 100644
index 0000000..a792e7c
--- /dev/null
+++ b/recoll-1.15.8-static-fix.patch
@@ -0,0 +1,259 @@
+diff -r 34f2ffceb65e src/filters/rclimg
+--- a/src/filters/rclimg	Mon May 16 09:39:11 2011 +0200
++++ b/src/filters/rclimg	Mon May 16 10:22:01 2011 +0200
+@@ -95,6 +95,10 @@
+     return $output;
+ }
+ 
++
++####################################################################
++# Code for the rclexecm filter<->indexer protocol from here
++
+ # Get one line from stdin (from recollindex), exit on eof
+ sub readlineorexit {
+     my $s = <STDIN>;
+diff -r 34f2ffceb65e src/filters/rclinfo
+--- a/src/filters/rclinfo	Mon May 16 09:39:11 2011 +0200
++++ b/src/filters/rclinfo	Mon May 16 10:22:01 2011 +0200
+@@ -12,6 +12,10 @@
+ # Prototype for the html document we're returning. Info files are
+ # normally ascii. Set no charset, and let it be provided by the
+ # environment if necessary
++#
++# Some info source docs contain charset info like:
++# @documentencoding ISO-2022-JP
++# But this seems to be absent from outputs.
+ htmltemplate = '''
+ <html>
+   <head>
+diff -r 34f2ffceb65e src/qtgui/rclmain_w.cpp
+--- a/src/qtgui/rclmain_w.cpp	Mon May 16 09:39:11 2011 +0200
++++ b/src/qtgui/rclmain_w.cpp	Mon May 16 10:22:01 2011 +0200
+@@ -266,12 +266,8 @@
+ 	    this, SLOT(startNativeViewer(Rcl::Doc)));
+     connect(restable, SIGNAL(docPreviewClicked(int, Rcl::Doc, int)), 
+ 	    this, SLOT(startPreview(int, Rcl::Doc, int)));
+-    connect(restable, SIGNAL(docEditClicked(Rcl::Doc)), 
+-	    this, SLOT(startNativeViewer(Rcl::Doc)));
+     connect(restable, SIGNAL(docExpand(Rcl::Doc)), 
+ 	    this, SLOT(docExpand(Rcl::Doc)));
+-    connect(restable, SIGNAL(docEditClicked(Rcl::Doc)), 
+-	    this, SLOT(startNativeViewer(Rcl::Doc)));
+     connect(restable, SIGNAL(previewRequested(Rcl::Doc)), 
+ 	    this, SLOT(startPreview(Rcl::Doc)));
+     connect(restable, SIGNAL(editRequested(Rcl::Doc)), 
+diff -r 34f2ffceb65e src/query/plaintorich.cpp
+--- a/src/query/plaintorich.cpp	Mon May 16 09:39:11 2011 +0200
++++ b/src/query/plaintorich.cpp	Mon May 16 10:22:01 2011 +0200
+@@ -41,8 +41,6 @@
+ #include "cancelcheck.h"
+ #include "unacpp.h"
+ 
+-const string PlainToRich::snull = "";
+-
+ // For debug printing
+ static string vecStringToString(const vector<string>& t)
+ {
+diff -r 34f2ffceb65e src/query/plaintorich.h
+--- a/src/query/plaintorich.h	Mon May 16 09:39:11 2011 +0200
++++ b/src/query/plaintorich.h	Mon May 16 10:22:01 2011 +0200
+@@ -86,7 +86,7 @@
+     virtual string startChunk() {return snull;}
+ 
+ protected:
+-    static const string snull;
++    const string snull;
+     bool m_inputhtml;
+     // Use <br> to break plain text lines (else caller has used a <pre> tag)
+     bool m_eolbr; 
+diff -r 34f2ffceb65e src/rcldb/rcldb.cpp
+--- a/src/rcldb/rcldb.cpp	Mon May 16 09:39:11 2011 +0200
++++ b/src/rcldb/rcldb.cpp	Mon May 16 10:22:01 2011 +0200
+@@ -83,6 +83,40 @@
+ // found in document)
+ static const string rclSyntAbs("?!#@");
+ 
++// Only ONE field name inside the index data record differs from the
++// Rcl::Doc ones: caption<->title, for a remnant of compatibility with
++// omega
++static const string keycap("caption");
++
++// Default table for field->prefix translation.  We prefer the data
++// from rclconfig if available. Note that this is logically const
++// after initialization.  Can't use a static object to init this as
++// the static std::string objects may not be ready
++static map<string, string> fldToPrefs;
++static void initFldToPrefs() 
++{
++    fldToPrefs[Doc::keyabs] = string();
++    fldToPrefs["ext"] = "XE";
++    fldToPrefs[Doc::keyfn] = "XSFN";
++
++    fldToPrefs[keycap] = "S";
++    fldToPrefs[Doc::keytt] = "S";
++    fldToPrefs["subject"] = "S";
++
++    fldToPrefs[Doc::keyau] = "A";
++    fldToPrefs["creator"] = "A";
++    fldToPrefs["from"] = "A";
++
++    fldToPrefs[Doc::keykw] = "K";
++    fldToPrefs["keyword"] = "K";
++    fldToPrefs["tag"] = "K";
++    fldToPrefs["tags"] = "K";
++
++    fldToPrefs["xapyear"] = "Y";
++    fldToPrefs["xapyearmon"] = "M";
++    fldToPrefs["xapdate"] = "D";
++}
++
+ // Compute the unique term used to link documents to their origin. 
+ // "Q" + external udi
+ static inline string make_uniterm(const string& udi)
+@@ -131,11 +165,6 @@
+     }
+ }
+ 
+-// Only ONE field name inside the index data record differs from the
+-// Rcl::Doc ones: caption<->title, for a remnant of compatibility with
+-// omega
+-static const string keycap("caption");
+-
+ // Turn data record from db into document fields
+ bool Db::Native::dbDataToRclDoc(Xapian::docid docid, std::string &data, 
+ 				Doc &doc)
+@@ -510,6 +539,9 @@
+       m_curtxtsz(0), m_flushtxtsz(0), m_occtxtsz(0), m_occFirstCheck(1),
+       m_maxFsOccupPc(0), m_mode(Db::DbRO)
+ {
++    if (!fldToPrefs.size())
++	initFldToPrefs();
++
+     m_ndb = new Native(this);
+     if (m_config) {
+ 	m_config->getConfParam("maxfsoccuppc", &m_maxFsOccupPc);
+@@ -759,39 +791,6 @@
+ // reason (old config not updated ?). We use it only if the config
+ // translation fails. Also we add in there fields which should be
+ // indexed with no prefix (ie: abstract)
+-
+-// Default table. We prefer the data from rclconfig if available. Note
+-// that it is logically const after initialization. This would be
+-// simpler with c0xx initializer lists.
+-static map<string, string> fldToPrefs;
+-class InitFldToPrefs {
+-public:
+-    InitFldToPrefs() 
+-    {
+-	fldToPrefs[Doc::keyabs] = string();
+-	fldToPrefs["ext"] = "XE";
+-	fldToPrefs[Doc::keyfn] = "XSFN";
+-
+-	fldToPrefs[keycap] = "S";
+-	fldToPrefs[Doc::keytt] = "S";
+-	fldToPrefs["subject"] = "S";
+-
+-	fldToPrefs[Doc::keyau] = "A";
+-	fldToPrefs["creator"] = "A";
+-	fldToPrefs["from"] = "A";
+-
+-	fldToPrefs[Doc::keykw] = "K";
+-	fldToPrefs["keyword"] = "K";
+-	fldToPrefs["tag"] = "K";
+-	fldToPrefs["tags"] = "K";
+-
+-        fldToPrefs["xapyear"] = "Y";
+-        fldToPrefs["xapyearmon"] = "M";
+-        fldToPrefs["xapdate"] = "D";
+-    }
+-};
+-static InitFldToPrefs IFTP;
+-
+ bool Db::fieldToPrefix(const string& fld, string &pfx)
+ {
+     if (m_config && m_config->getFieldPrefix(fld, pfx))
+diff -r 34f2ffceb65e src/rcldb/rcldb_p.h
+--- a/src/rcldb/rcldb_p.h	Mon May 16 09:39:11 2011 +0200
++++ b/src/rcldb/rcldb_p.h	Mon May 16 10:22:01 2011 +0200
+@@ -114,20 +114,5 @@
+ 
+ };
+ 
+-// Field names inside the index data record may differ from the rcldoc ones
+-// (esp.: caption / title)
+-inline const string& docfToDatf(const string& df)
+-{
+-    static const string keycap("caption");
+-    static const string keydmtime("dmtime");
+-    if (!df.compare(Doc::keytt)) {
+-	return keycap;
+-    } else if (!df.compare(Doc::keymt)) {
+-	return keydmtime;
+-    } else {
+-	return df;
+-    }
+-}
+-
+ }
+ #endif /* _rcldb_p_h_included_ */
+diff -r 34f2ffceb65e src/rcldb/rclquery.cpp
+--- a/src/rcldb/rclquery.cpp	Mon May 16 09:39:11 2011 +0200
++++ b/src/rcldb/rclquery.cpp	Mon May 16 10:22:01 2011 +0200
+@@ -39,6 +39,21 @@
+ namespace Rcl {
+ #endif
+ 
++// Field names inside the index data record may differ from the rcldoc ones
++// (esp.: caption / title)
++static const string& docfToDatf(const string& df)
++{
++    static const string keycap("caption");
++    static const string keydmtime("dmtime");
++    if (!df.compare(Doc::keytt)) {
++	return keycap;
++    } else if (!df.compare(Doc::keymt)) {
++	return keydmtime;
++    } else {
++	return df;
++    }
++}
++
+ // Sort helper class
+ class QSorter : public Xapian::Sorter {
+ public:
+diff -r 34f2ffceb65e src/utils/circache.cpp
+--- a/src/utils/circache.cpp	Mon May 16 09:39:11 2011 +0200
++++ b/src/utils/circache.cpp	Mon May 16 10:22:01 2011 +0200
+@@ -1104,12 +1104,12 @@
+     return true;
+ }
+ 
+-void *
+-allocmem(void 	*cp,	/* The array to grow. may be NULL */
+-	 int	 sz,	/* Unit size in bytes */
+-	 int 	*np,    /* Pointer to current allocation number */
+-	 int	 min,   /* Number to allocate the first time */
+-	 int	 maxinc) /* Maximum increment */
++static void *allocmem(
++    void *cp,	/* The array to grow. may be NULL */
++    int	 sz,	/* Unit size in bytes */
++    int  *np,    /* Pointer to current allocation number */
++    int	 min,   /* Number to allocate the first time */
++    int	 maxinc) /* Maximum increment */
+ {
+     if (cp == 0) {
+         cp = malloc(min * sz);
+diff -r 34f2ffceb65e src/utils/circache.h
+--- a/src/utils/circache.h	Mon May 16 09:39:11 2011 +0200
++++ b/src/utils/circache.h	Mon May 16 10:22:01 2011 +0200
+@@ -34,10 +34,6 @@
+  * 
+  * It is assumed that the dictionary are small (they are routinely read/parsed)
+  *
+- * A problem with this approach is that repetitively storing the same
+- * object will evict all others. This could be somewhat optimized by reusing 
+- * the last entry if it has the same udi as the one written, but not done 
+- * currently.
+  */
+ 
+ #include <sys/types.h>
diff --git a/recoll.spec b/recoll.spec
index 7db9bf6..f18f929 100644
--- a/recoll.spec
+++ b/recoll.spec
@@ -1,11 +1,12 @@
 Summary:        Desktop full text search tool with Qt GUI
 Name:           recoll
 Version:        1.15.8
-Release:        1%{?dist}
+Release:        2%{?dist}
 Group:          Applications/Databases
 License:        GPLv2+
 URL:            http://www.lesbonscomptes.com/recoll/
 Source0:        http://www.lesbonscomptes.com/recoll/recoll-%{version}.tar.gz
+Patch0:         recoll-1.15.8-static-fix.patch 
 BuildRequires:  qt-devel
 BuildRequires:  zlib-devel
 BuildRequires:  aspell-devel
@@ -22,6 +23,7 @@ interface.
 
 %prep
 %setup -q
+%patch0 -p2
 # remove execute bit
 %{__chmod} 0644 utils/{conftree.cpp,conftree.h,debuglog.cpp,debuglog.h}
 
@@ -78,6 +80,9 @@ exit 0
 %{_mandir}/man5/%{name}.conf.5*
 
 %changelog
+* Tue May 24 2011 Terje Rosten <terje.rosten at ntnu.no> - 1.15.8-2
+- add patch from upstream to fix crash.
+
 * Sun May 08 2011 Terje Rosten <terje.rosten at ntnu.no> - 1.15.8-1
 - 1.15.8
 


More information about the scm-commits mailing list