diff --git a/lib/parse-sexp.cc b/lib/parse-sexp.cc index 08fd7037..6282a456 100644 --- a/lib/parse-sexp.cc +++ b/lib/parse-sexp.cc @@ -504,14 +504,20 @@ _sexp_parse_range (notmuch_database_t *notmuch, const _sexp_prefix_t *prefix, long from_idx, to_idx; try { - from_idx = std::stol (from); + if (EMPTY_STRING (from)) + from_idx = 0L; + else + from_idx = std::stol (from); } catch (std::logic_error &e) { _notmuch_database_log (notmuch, "bad 'from' revision: '%s'\n", from); return NOTMUCH_STATUS_BAD_QUERY_SYNTAX; } try { - to_idx = std::stol (to); + if (EMPTY_STRING (to)) + to_idx = LONG_MAX; + else + to_idx = std::stol (to); } catch (std::logic_error &e) { _notmuch_database_log (notmuch, "bad 'to' revision: '%s'\n", to); return NOTMUCH_STATUS_BAD_QUERY_SYNTAX; diff --git a/test/T081-sexpr-search.sh b/test/T081-sexpr-search.sh index 31169fb5..896ffe5d 100755 --- a/test/T081-sexpr-search.sh +++ b/test/T081-sexpr-search.sh @@ -932,13 +932,11 @@ notmuch search --query=sexp "(and (lastmod $revision $revision2))" | notmuch_se test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "lastmod query, lower bound only" -test_subtest_known_broken notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(lastmod $revision \"\")" | notmuch_search_sanitize > OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "lastmod query, upper bound only" -test_subtest_known_broken notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(lastmod \"\" $revision2)" | notmuch_search_sanitize > OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT