Skip to content

Commit 00c9bee

Browse files
committed
Clear before decoding in case insensitive string comparison
1 parent b84ad26 commit 00c9bee

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/scratch/string_functions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ extern "C"
8484
inline int string_compare_raw_case_insensitive_inline(const char16_t *str1, size_t n1, const char16_t *str2, size_t n2)
8585
{
8686
const size_t min_len = std::min(n1, n2);
87-
std::u32string cp1_str, cp2_str;
8887
char32_t cp1, cp2;
8988

9089
for (size_t i = 0; i < min_len; ++i) {
90+
std::u32string cp1_str, cp2_str;
9191
unicode::utf16::decode(str1 + i, 1, cp1_str);
9292
unicode::utf16::decode(str2 + i, 1, cp2_str);
9393

test/scratch_classes/string_functions_test.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ TEST(StringFunctionsTest, CompareCaseSensitive)
9595
ASSERT_EQ(string_compare_case_sensitive(&str1, &str2), 0);
9696
ASSERT_EQ(string_compare_raw_case_sensitive(str1.data, str1.size, str2.data, str2.size), 0);
9797

98+
string_assign_cstring(&str1, "5.25");
99+
string_assign_cstring(&str2, "5.26");
100+
ASSERT_LT(string_compare_case_sensitive(&str1, &str2), 0);
101+
ASSERT_LT(string_compare_raw_case_sensitive(str1.data, str1.size, str2.data, str2.size), 0);
102+
98103
string_assign_cstring(&str1, "aBcd");
99104
string_assign_cstring(&str2, "abCd");
100105
ASSERT_LT(string_compare_case_sensitive(&str1, &str2), 0);
@@ -180,6 +185,11 @@ TEST(StringFunctionsTest, CompareCaseInsensitive)
180185
ASSERT_EQ(string_compare_case_insensitive(&str1, &str2), 0);
181186
ASSERT_EQ(string_compare_raw_case_insensitive(str1.data, str1.size, str2.data, str2.size), 0);
182187

188+
string_assign_cstring(&str1, "5.25");
189+
string_assign_cstring(&str2, "5.26");
190+
ASSERT_LT(string_compare_case_insensitive(&str1, &str2), 0);
191+
ASSERT_LT(string_compare_raw_case_insensitive(str1.data, str1.size, str2.data, str2.size), 0);
192+
183193
string_assign_cstring(&str1, "aBcd");
184194
string_assign_cstring(&str2, "abCd");
185195
ASSERT_EQ(string_compare_case_insensitive(&str1, &str2), 0);

0 commit comments

Comments
 (0)