From ed63a60247924dfaee52b1c9e3995f71bdc3890c Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sat, 26 Jul 2025 12:13:02 -0400 Subject: [PATCH] AK: Return an empty optional when UTF-16 code unit lookup fails Accidentally returned the wrong type here. --- AK/Utf16View.h | 2 +- Tests/AK/TestUtf16View.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/AK/Utf16View.h b/AK/Utf16View.h index 5a5c2d8852b..0fd01edb43d 100644 --- a/AK/Utf16View.h +++ b/AK/Utf16View.h @@ -420,7 +420,7 @@ public: if (has_ascii_storage()) { if (!AK::is_ascii(needle)) - return false; + return {}; auto byte = static_cast(needle); return AK::memmem_optional(m_string.ascii + start_offset, length_in_code_units() - start_offset, &byte, sizeof(byte)); diff --git a/Tests/AK/TestUtf16View.cpp b/Tests/AK/TestUtf16View.cpp index 0721192b0eb..f234766ae59 100644 --- a/Tests/AK/TestUtf16View.cpp +++ b/Tests/AK/TestUtf16View.cpp @@ -547,6 +547,12 @@ TEST_CASE(contains) EXPECT(u"😀"sv.contains(u'\xd83d')); EXPECT(u"😀"sv.contains(u'\xde00')); + EXPECT(!Utf16View { ""sv }.contains(u'a')); + EXPECT(Utf16View { "a"sv }.contains(u'a')); + EXPECT(!Utf16View { "b"sv }.contains(u'a')); + EXPECT(!Utf16View { "b"sv }.contains(u'\xd83d')); + EXPECT(!Utf16View { "b"sv }.contains(u'\xde00')); + EXPECT(u""sv.contains(u""sv)); EXPECT(!u""sv.contains(u"a"sv)); EXPECT(u"a"sv.contains(u"a"sv));