[utils] require at least one non-space/non-hyphen match in utf8_common_prefix_len_ignore_separators
This commit is contained in:
@@ -236,6 +236,8 @@ size_t utf8_common_prefix_len_ignore_separators(const char *str1, const char *st
|
|||||||
|
|
||||||
size_t match_len = 0;
|
size_t match_len = 0;
|
||||||
|
|
||||||
|
bool one_char_match = false;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
len1 = utf8proc_iterate(ptr1, -1, &c1);
|
len1 = utf8proc_iterate(ptr1, -1, &c1);
|
||||||
len2 = utf8proc_iterate(ptr2, -1, &c2);
|
len2 = utf8proc_iterate(ptr2, -1, &c2);
|
||||||
@@ -247,9 +249,14 @@ size_t utf8_common_prefix_len_ignore_separators(const char *str1, const char *st
|
|||||||
ptr2 += len2;
|
ptr2 += len2;
|
||||||
remaining -= len1;
|
remaining -= len1;
|
||||||
match_len += len1;
|
match_len += len1;
|
||||||
|
one_char_match = true;
|
||||||
} else if (utf8_is_hyphen(c1) || utf8_is_separator(utf8proc_category(c1))) {
|
} else if (utf8_is_hyphen(c1) || utf8_is_separator(utf8proc_category(c1))) {
|
||||||
ptr1 += len1;
|
ptr1 += len1;
|
||||||
match_len += len1;
|
match_len += len1;
|
||||||
|
if (utf8_is_hyphen(c2) || utf8_is_separator(utf8proc_category(c2))) {
|
||||||
|
ptr2 += len2;
|
||||||
|
remaining -= len2;
|
||||||
|
}
|
||||||
} else if (utf8_is_hyphen(c2) || utf8_is_separator(utf8proc_category(c2))) {
|
} else if (utf8_is_hyphen(c2) || utf8_is_separator(utf8proc_category(c2))) {
|
||||||
ptr2 += len2;
|
ptr2 += len2;
|
||||||
remaining -= len2;
|
remaining -= len2;
|
||||||
@@ -261,7 +268,8 @@ size_t utf8_common_prefix_len_ignore_separators(const char *str1, const char *st
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return match_len;
|
return one_char_match ? match_len : 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t utf8_common_prefix_ignore_separators(const char *str1, const char *str2) {
|
inline size_t utf8_common_prefix_ignore_separators(const char *str1, const char *str2) {
|
||||||
|
|||||||
Reference in New Issue
Block a user