diff --git a/AK/StringUtils.cpp b/AK/StringUtils.cpp index 23d41c0335a..baadb05163f 100644 --- a/AK/StringUtils.cpp +++ b/AK/StringUtils.cpp @@ -412,10 +412,15 @@ Optional find_last(StringView haystack, char needle) Optional find_last(StringView haystack, StringView needle) { - for (size_t i = haystack.length(); i > 0; --i) { - auto value = StringUtils::find(haystack, needle, i - 1); - if (value.has_value()) - return value; + if (needle.length() > haystack.length()) + return {}; + + for (size_t i = haystack.length() - needle.length();; --i) { + if (haystack.substring_view(i, needle.length()) == needle) + return i; + + if (i == 0) + break; } return {};