diff --git a/src/searcher.cpp b/src/searcher.cpp index 8fa77c391..7e7403027 100644 --- a/src/searcher.cpp +++ b/src/searcher.cpp @@ -94,6 +94,12 @@ bool Searcher::add_reader(Reader* reader) if (!reader->hasFulltextIndex()) { return false; } + + for ( const Reader* const existing_reader : readers ) { + if ( existing_reader->getZimArchive()->getUuid() == reader->getZimArchive()->getUuid() ) + return false; + } + this->readers.push_back(reader); return true; } diff --git a/test/searcher.cpp b/test/searcher.cpp index a3569d959..5adb0adeb 100644 --- a/test/searcher.cpp +++ b/test/searcher.cpp @@ -5,6 +5,18 @@ namespace kiwix { +TEST(Searcher, add_reader) { + Reader reader1("./test/example.zim"); + Reader reader2("./test/example.zim"); + Reader reader3("./test/../test/example.zim"); + + Searcher searcher; + ASSERT_TRUE (searcher.add_reader(&reader1)); + ASSERT_FALSE(searcher.add_reader(&reader1)); + ASSERT_FALSE(searcher.add_reader(&reader2)); + ASSERT_FALSE(searcher.add_reader(&reader3)); +} + TEST(Searcher, search) { Reader reader("./test/example.zim"); @@ -64,4 +76,4 @@ TEST(Searcher, incrementalRange) { ASSERT_EQ(suggCount, 50); } -} \ No newline at end of file +}