mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 19:45:12 +00:00
LibJS: Fix PropertyName::from_value() for negative and non-int numbers
It was converting *any* number to an i32 index, which obviously is not correct for negative ints, doubles, infinity and nan. Fixes #3712.
This commit is contained in:
parent
44d4423229
commit
bc78e4b7da
Notes:
sideshowbarker
2024-07-19 01:58:43 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/bc78e4b7da2 Pull-request: https://github.com/SerenityOS/serenity/pull/3713 Issue: https://github.com/SerenityOS/serenity/issues/3712
2 changed files with 16 additions and 4 deletions
|
@ -42,13 +42,13 @@ public:
|
|||
|
||||
static PropertyName from_value(GlobalObject& global_object, Value value)
|
||||
{
|
||||
if (value.is_empty())
|
||||
return {};
|
||||
if (value.is_symbol())
|
||||
return &value.as_symbol();
|
||||
if (value.is_number())
|
||||
if (value.is_integer() && value.as_i32() >= 0)
|
||||
return value.as_i32();
|
||||
if (!value.is_empty())
|
||||
return value.to_string(global_object);
|
||||
return {};
|
||||
return value.to_string(global_object);
|
||||
}
|
||||
|
||||
PropertyName() { }
|
||||
|
|
12
Libraries/LibJS/Tests/object-expression-computed-property.js
Normal file
12
Libraries/LibJS/Tests/object-expression-computed-property.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
test("Issue #3712, negative/non-int computed property in object expression", () => {
|
||||
const o = {
|
||||
[1.23]: "foo",
|
||||
[-1]: "foo",
|
||||
[NaN]: "foo",
|
||||
[Infinity]: "foo",
|
||||
};
|
||||
expect(o[1.23]).toBe("foo");
|
||||
expect(o[-1]).toBe("foo");
|
||||
expect(o[NaN]).toBe("foo");
|
||||
expect(o[Infinity]).toBe("foo");
|
||||
});
|
Loading…
Add table
Reference in a new issue