1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:57:45 +00:00

LibJS: Throw RangeError in String.prototype.repeat() if count is invalid

This commit is contained in:
Linus Groh 2020-04-19 22:34:57 +01:00 committed by Andreas Kling
parent 0718f216af
commit a893c6ff0d

View file

@ -86,12 +86,11 @@ Value StringPrototype::repeat(Interpreter& interpreter)
ASSERT(this_object->is_string_object()); ASSERT(this_object->is_string_object());
if (!interpreter.argument_count()) if (!interpreter.argument_count())
return js_string(interpreter, String::empty()); return js_string(interpreter, String::empty());
i32 count = 0; if (interpreter.argument(0).to_double() < 0)
count = interpreter.argument(0).to_i32(); return interpreter.throw_exception<RangeError>("repeat count must be a positive number");
if (count < 0) { if (interpreter.argument(0).to_number().is_infinity())
// FIXME: throw RangeError return interpreter.throw_exception<RangeError>("repeat count must be a finite number");
return {}; auto count = interpreter.argument(0).to_i32();
}
auto* string_object = static_cast<StringObject*>(this_object); auto* string_object = static_cast<StringObject*>(this_object);
StringBuilder builder; StringBuilder builder;
for (i32 i = 0; i < count; ++i) for (i32 i = 0; i < count; ++i)