diff --git a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp index f405e95019..59f96779c7 100644 --- a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp @@ -51,13 +51,14 @@ Value ArrayConstructor::call() return Array::create(global_object()); if (vm().argument_count() == 1 && vm().argument(0).is_number()) { - auto array_length_value = vm().argument(0); - if (!array_length_value.is_integral_number() || array_length_value.as_i32() < 0) { + auto length = vm().argument(0); + auto int_length = length.to_u32(global_object()); + if (int_length != length.as_double()) { vm().throw_exception(global_object(), ErrorType::InvalidLength, "array"); return {}; } auto* array = Array::create(global_object()); - array->indexed_properties().set_array_like_size(array_length_value.as_i32()); + array->indexed_properties().set_array_like_size(int_length); return array; }