mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:57:35 +00:00
LibJS: Don't create "valid" PropertyName from null string
When value.to_string() throws an exception it returns a null string in which case we must not construct a valid PropertyName. Also ASSERT in PropertyName(String) and PropertyName(FlyString) to prevent this from happening in the future. Fixes #3941.
This commit is contained in:
parent
8afe1c8165
commit
41837f548d
2 changed files with 18 additions and 1 deletions
|
@ -48,7 +48,10 @@ public:
|
|||
return &value.as_symbol();
|
||||
if (value.is_integer() && value.as_i32() >= 0)
|
||||
return value.as_i32();
|
||||
return value.to_string(global_object);
|
||||
auto string = value.to_string(global_object);
|
||||
if (string.is_null())
|
||||
return {};
|
||||
return string;
|
||||
}
|
||||
|
||||
PropertyName() { }
|
||||
|
@ -70,18 +73,21 @@ public:
|
|||
: m_type(Type::String)
|
||||
, m_string(FlyString(string))
|
||||
{
|
||||
ASSERT(!string.is_null());
|
||||
}
|
||||
|
||||
PropertyName(const FlyString& string)
|
||||
: m_type(Type::String)
|
||||
, m_string(string)
|
||||
{
|
||||
ASSERT(!string.is_null());
|
||||
}
|
||||
|
||||
PropertyName(Symbol* symbol)
|
||||
: m_type(Type::Symbol)
|
||||
, m_symbol(symbol)
|
||||
{
|
||||
ASSERT(symbol);
|
||||
}
|
||||
|
||||
PropertyName(const StringOrSymbol& string_or_symbol)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue