diff --git a/source/blender/blenlib/intern/string_search.cc b/source/blender/blenlib/intern/string_search.cc index c29892f5e82..02d8642264f 100644 --- a/source/blender/blenlib/intern/string_search.cc +++ b/source/blender/blenlib/intern/string_search.cc @@ -125,7 +125,7 @@ int get_fuzzy_match_errors(StringRef query, StringRef full) const char *window_begin = full_begin; const char *window_end = window_begin; const int window_size = std::min(query_size + max_errors, full_size); - const int extra_chars = window_size - query_size; + const int extra_chars = std::max(window_size - query_size, 0); const int max_acceptable_distance = max_errors + extra_chars; for (int i = 0; i < window_size; i++) { diff --git a/source/blender/blenlib/tests/BLI_string_search_test.cc b/source/blender/blenlib/tests/BLI_string_search_test.cc index 1fc4647a470..00590dbdda0 100644 --- a/source/blender/blenlib/tests/BLI_string_search_test.cc +++ b/source/blender/blenlib/tests/BLI_string_search_test.cc @@ -36,6 +36,7 @@ TEST(string_search, get_fuzzy_match_errors) EXPECT_EQ(get_fuzzy_match_errors("hello", "hallo"), 1); EXPECT_EQ(get_fuzzy_match_errors("hap", "hello"), -1); EXPECT_EQ(get_fuzzy_match_errors("armature", UI_MENU_ARROW_SEP "restore"), -1); + EXPECT_EQ(get_fuzzy_match_errors("bluir", "blur"), get_fuzzy_match_errors("blur", "bluir")); } TEST(string_search, extract_normalized_words)