summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2021-06-11 00:22:53 +0100
committerLinus Groh <mail@linusgroh.de>2021-06-11 00:23:13 +0100
commitf218a4b5488aeec968153c5e3f70c7449dd95427 (patch)
tree533bb89e2cf1bc5aff8576d5584d75f223d92111 /Userland
parent0e38c9b2f76bc4877dec7447b700c5651f181ace (diff)
downloadserenity-f218a4b5488aeec968153c5e3f70c7449dd95427.zip
LibJS: Set Error message attributes to writable and configurable only
20.5.1.1 Error ( message ) When the Error function is called with argument message, the following steps are taken: [...] 3b. Let msgDesc be the PropertyDescriptor { [[Value]]: msg, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }. 3c. Perform ! DefinePropertyOrThrow(O, "message", msgDesc).
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibJS/Runtime/Error.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Error.cpp b/Userland/Libraries/LibJS/Runtime/Error.cpp
index 04a4d5ec04..88cc732e7e 100644
--- a/Userland/Libraries/LibJS/Runtime/Error.cpp
+++ b/Userland/Libraries/LibJS/Runtime/Error.cpp
@@ -14,8 +14,10 @@ Error* Error::create(GlobalObject& global_object, const String& message)
{
auto& vm = global_object.vm();
auto* error = global_object.heap().allocate<Error>(global_object, *global_object.error_prototype());
- if (!message.is_null())
- error->define_property(vm.names.message, js_string(vm, message));
+ if (!message.is_null()) {
+ u8 attr = Attribute::Writable | Attribute::Configurable;
+ error->define_property(vm.names.message, js_string(vm, message), attr);
+ }
return error;
}
@@ -29,8 +31,10 @@ Error::Error(Object& prototype)
{ \
auto& vm = global_object.vm(); \
auto* error = global_object.heap().allocate<ClassName>(global_object, *global_object.snake_name##_prototype()); \
- if (!message.is_null()) \
- error->define_property(vm.names.message, js_string(vm, message)); \
+ if (!message.is_null()) { \
+ u8 attr = Attribute::Writable | Attribute::Configurable; \
+ error->define_property(vm.names.message, js_string(vm, message), attr); \
+ } \
return error; \
} \
\