Parcourir la source

LibRegex: Avoid making unnecessary string copies

Gunnar Beutner il y a 4 ans
Parent
commit
214410b397
1 fichiers modifiés avec 6 ajouts et 8 suppressions
  1. 6 8
      Userland/Libraries/LibRegex/RegexByteCode.cpp

+ 6 - 8
Userland/Libraries/LibRegex/RegexByteCode.cpp

@@ -528,15 +528,13 @@ ALWAYS_INLINE bool OpCode_Compare::compare_string(const MatchInput& input, Match
         auto str_view1 = StringView(str, length);
         auto str_view2 = StringView(&input.view.u8view()[state.string_position], length);
 
-        String str1, str2;
-        if (input.regex_options & AllFlags::Insensitive) {
-            str1 = str_view1.to_string().to_lowercase();
-            str2 = str_view2.to_string().to_lowercase();
-            str_view1 = str1.view();
-            str_view2 = str2.view();
-        }
+        bool string_equals;
+        if (input.regex_options & AllFlags::Insensitive)
+            string_equals = str_view1.equals_ignoring_case(str_view2);
+        else
+            string_equals = str_view1 == str_view2;
 
-        if (str_view1 == str_view2) {
+        if (string_equals) {
             state.string_position += length;
             if (length == 0)
                 had_zero_length_match = true;