From f207ed94dfa0c54e7cfb5ae9b31bfe6191af1344 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 26 Mar 2014 17:19:40 -0400 Subject: [PATCH] filter: Make sure we don't crash when searching This only seems to happen when the user searches for something not in the filter. Signed-off-by: Anna Schumaker --- lib/filter.cpp | 8 ++++---- tests/filter | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/filter.cpp b/lib/filter.cpp index c18408c7..06102936 100644 --- a/lib/filter.cpp +++ b/lib/filter.cpp @@ -106,17 +106,17 @@ void filter :: search(const std::string &text, std::set &res) { std::list parsed; std::list::iterator it; + IndexEntry *found; parse_text(text, parsed); if (parsed.size() == 0) return; it = parsed.begin(); - try { - res = filter_index.find(*it)->values; - } catch (...) { + found = filter_index.find(*it); + if (!found) return; - } + res = found->values; for (it++; it != parsed.end(); it++) find_intersection(*it, res); diff --git a/tests/filter b/tests/filter index fa2cad0f..a6896b43 100755 --- a/tests/filter +++ b/tests/filter @@ -69,3 +69,4 @@ test_search "the" "4 5 6 8" test_search "the ch" "4 6" test_search "the CH" "4 6" test_search "the ch y" "4" +test_search "unknown terms" ""