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));