mirror of https://github.com/kiwix/libkiwix.git
Always set the humanReadableName with the readable in kiwix-search.
We always need a humanReadableName associated with a content to search in. Do not separate the two values (human readable name and zim) in two different functions. This way, we avoid miss-use of the Searcher who could lead to segfault.
This commit is contained in:
parent
b6e51055a3
commit
1ff1bf6168
|
@ -57,7 +57,9 @@ class Searcher
|
|||
{
|
||||
public:
|
||||
Searcher();
|
||||
Searcher(const string& xapianDirectoryPath, Reader* reader);
|
||||
Searcher(const string& xapianDirectoryPath,
|
||||
Reader* reader,
|
||||
const string& humanReadableName);
|
||||
~Searcher();
|
||||
|
||||
void add_reader(Reader* reader, const std::string& humanReaderName);
|
||||
|
@ -72,7 +74,6 @@ class Searcher
|
|||
bool setProtocolPrefix(const std::string prefix);
|
||||
bool setSearchProtocolPrefix(const std::string prefix);
|
||||
void reset();
|
||||
void setContentHumanReadableId(const string& contentHumanReadableId);
|
||||
|
||||
#ifdef ENABLE_CTPP2
|
||||
string getHtml();
|
||||
|
|
|
@ -514,7 +514,7 @@ JNIEXPORT jboolean JNICALL Java_org_kiwix_kiwixlib_JNIKiwix_loadFulltextIndex(
|
|||
}
|
||||
if (!reader || !reader->hasFulltextIndex()) {
|
||||
// Use old API (no embedded full text index).
|
||||
searcher = new kiwix::Searcher(cPath, reader);
|
||||
searcher = new kiwix::Searcher(cPath, reader, "");
|
||||
} else {
|
||||
// Use the new API. We don't care about the human readable name as
|
||||
// we don't use it (in android).
|
||||
|
|
|
@ -73,7 +73,9 @@ struct SearcherInternal {
|
|||
};
|
||||
|
||||
/* Constructor */
|
||||
Searcher::Searcher(const string& xapianDirectoryPath, Reader* reader)
|
||||
Searcher::Searcher(const string& xapianDirectoryPath,
|
||||
Reader* reader,
|
||||
const string& humanReadableName)
|
||||
: internal(new SearcherInternal()),
|
||||
searchPattern(""),
|
||||
protocolPrefix("zim://"),
|
||||
|
@ -88,6 +90,8 @@ Searcher::Searcher(const string& xapianDirectoryPath, Reader* reader)
|
|||
if (!reader || !reader->hasFulltextIndex()) {
|
||||
internal->_xapianSearcher = new XapianSearcher(xapianDirectoryPath, reader);
|
||||
}
|
||||
this->contentHumanReadableId = humanReadableName;
|
||||
this->humanReaderNames.push_back(humanReadableName);
|
||||
}
|
||||
|
||||
Searcher::Searcher()
|
||||
|
@ -252,11 +256,6 @@ bool Searcher::setSearchProtocolPrefix(const std::string prefix)
|
|||
return true;
|
||||
}
|
||||
|
||||
void Searcher::setContentHumanReadableId(const string& contentHumanReadableId)
|
||||
{
|
||||
this->contentHumanReadableId = contentHumanReadableId;
|
||||
}
|
||||
|
||||
_Result::_Result(Searcher* searcher, zim::Search::iterator& iterator)
|
||||
: searcher(searcher), iterator(iterator)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue