From 9d7a1e3bb319f6b603affb6a3d391148d60e89f9 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 20 Dec 2018 00:00:42 -0800 Subject: [PATCH] fuzzy_match: a pattern prefixed with a letter should not match underscore prefixed builtin names --- src/fuzzy_match.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/fuzzy_match.cc b/src/fuzzy_match.cc index 680aa4ac..b377d586 100644 --- a/src/fuzzy_match.cc +++ b/src/fuzzy_match.cc @@ -108,6 +108,8 @@ FuzzyMatcher::FuzzyMatcher(std::string_view pattern, int sensitivity) { } int FuzzyMatcher::Match(std::string_view text) { + if (pat.empty() != text.empty()) + return kMinScore; int n = int(text.size()); if (n > kMaxText) return kMinScore + 1; @@ -115,6 +117,8 @@ int FuzzyMatcher::Match(std::string_view text) { for (int i = 0; i < n; i++) low_text[i] = ::tolower(text[i]); CalculateRoles(text, text_role, &text_set); + if (n && !!pat_role[0] != !!text_role[0]) + return kMinScore; dp[0][0][0] = dp[0][0][1] = 0; for (int j = 0; j < n; j++) { dp[0][j + 1][0] = dp[0][j][0] + MissScore(j, false);