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

LibJS: Throw TypeError on non-object this value in ArrayBuffer methods

`1. If Type(O) is not Object, throw a TypeError exception.`
This commit is contained in:
Idan Horowitz 2021-06-10 22:42:10 +03:00 committed by Linus Groh
parent bc95201aaf
commit 7d6db3f09b

View file

@ -37,14 +37,11 @@ static ArrayBuffer* array_buffer_object_from(VM& vm, GlobalObject& global_object
{ {
// ArrayBuffer.prototype.* deliberately don't coerce |this| value to object. // ArrayBuffer.prototype.* deliberately don't coerce |this| value to object.
auto this_value = vm.this_value(global_object); auto this_value = vm.this_value(global_object);
if (!this_value.is_object()) if (!this_value.is_object() || !is<ArrayBuffer>(this_value.as_object())) {
return nullptr;
auto& this_object = this_value.as_object();
if (!is<ArrayBuffer>(this_object)) {
vm.throw_exception<TypeError>(global_object, ErrorType::NotAn, "ArrayBuffer"); vm.throw_exception<TypeError>(global_object, ErrorType::NotAn, "ArrayBuffer");
return nullptr; return nullptr;
} }
return static_cast<ArrayBuffer*>(&this_object); return static_cast<ArrayBuffer*>(&this_value.as_object());
} }
// 25.1.5.3 ArrayBuffer.prototype.slice, https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice // 25.1.5.3 ArrayBuffer.prototype.slice, https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice