1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:07:44 +00:00

LibJS: Never omit setter/getter attributes in accessor descriptor object

These should not be omitted, an accessor with out getter or setter still
yields an undefined for the attribute in its descriptor object.
This commit is contained in:
Linus Groh 2021-06-07 23:07:13 +01:00
parent 8c964ef9f8
commit 3fdad563e2

View file

@ -434,17 +434,14 @@ Value Object::get_own_property_descriptor_object(const PropertyName& property_na
descriptor_object->define_property(vm.names.writable, Value(descriptor.attributes.is_writable()));
if (vm.exception())
return {};
} else if (descriptor.is_accessor_descriptor()) {
if (descriptor.getter) {
descriptor_object->define_property(vm.names.get, Value(descriptor.getter));
if (vm.exception())
return {};
}
if (descriptor.setter) {
descriptor_object->define_property(vm.names.set, Value(descriptor.setter));
if (vm.exception())
return {};
}
} else {
VERIFY(descriptor.is_accessor_descriptor());
descriptor_object->define_property(vm.names.get, descriptor.getter ? Value(descriptor.getter) : js_undefined());
if (vm.exception())
return {};
descriptor_object->define_property(vm.names.set, descriptor.setter ? Value(descriptor.setter) : js_undefined());
if (vm.exception())
return {};
}
descriptor_object->define_property(vm.names.enumerable, Value(descriptor.attributes.is_enumerable()));
if (vm.exception())