diff --git a/src/sdcv.cpp b/src/sdcv.cpp index 29635d4..170ac2f 100644 --- a/src/sdcv.cpp +++ b/src/sdcv.cpp @@ -219,12 +219,15 @@ try { search_result rval = SEARCH_SUCCESS; gchar **p = get_impl(word_list); while (*p) { - if ((rval = lib.process_phrase(*p++, *io, non_interactive)) != SEARCH_SUCCESS) { - return rval; - } + search_result this_rval = lib.process_phrase(*p++, *io, non_interactive); + // If we encounter any error, save it but continue through the word + // list to check all requested words. + if (rval == SEARCH_SUCCESS) + rval = this_rval; } + if (rval != SEARCH_SUCCESS) + return rval; } else if (!non_interactive) { - std::string phrase; while (io->read(_("Enter word or phrase: "), phrase)) { if (lib.process_phrase(phrase.c_str(), *io) == SEARCH_FAILURE) diff --git a/tests/t_json b/tests/t_json index 1887b0b..79db5f6 100755 --- a/tests/t_json +++ b/tests/t_json @@ -22,4 +22,7 @@ test_json '[{"name": "Test synonyms", "wordcount": "2"},{"name": "Sample 1 test test_json '[{"dict": "Test synonyms","word":"test","definition":"\u000aresult of test"}]' -x -j -n --data-dir "$TEST_DIR" foo test_json '[]' -x -j -n --data-dir "$TEST_DIR" foobarbaaz +# Test multiple searches, with the first failing. +test_json '[][{"dict": "Test synonyms","word":"test","definition":"\u000aresult of test"}]' -x -j -n --data-dir "$TEST_DIR" foobarbaaz foo + exit 0