From b68509569edbc02e12cbd0311357ab84e386e385 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sun, 14 Mar 2021 12:06:29 +0100 Subject: LibJS: Fix String.prototype.match() for non-string argument This is supposed to pass the to_string()'d argument to @@match, not the this value. --- Userland/Libraries/LibJS/Runtime/StringPrototype.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'Userland/Libraries/LibJS/Runtime') diff --git a/Userland/Libraries/LibJS/Runtime/StringPrototype.cpp b/Userland/Libraries/LibJS/Runtime/StringPrototype.cpp index 98e5365954..e7cf3428fa 100644 --- a/Userland/Libraries/LibJS/Runtime/StringPrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/StringPrototype.cpp @@ -666,19 +666,13 @@ JS_DEFINE_NATIVE_FUNCTION(StringPrototype::match) if (auto* matcher = get_method(global_object, regexp, vm.well_known_symbol_match())) return vm.call(*matcher, regexp, this_object); } - auto s = this_object.to_primitive_string(global_object); - if (!s) - return {}; - auto regexp_string = regexp.to_string(global_object); - if (regexp_string.is_null()) + auto s = this_object.to_string(global_object); + if (vm.exception()) return {}; auto rx = regexp_create(global_object, regexp, js_undefined()); if (!rx) return {}; - auto* matcher = get_method(global_object, rx, vm.well_known_symbol_match()); - if (!matcher) - return {}; - return vm.call(*matcher, rx, this_object); + return rx->invoke(vm.well_known_symbol_match(), js_string(vm, s)); } } -- cgit v1.2.3