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