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

LibWeb: Make sure we fallback to "Unsupported type" if type unrecognized

If we do not recognize the Type being serialized make sure we always
fallback to setting m_error to "Unsupported type".
This commit is contained in:
Kenneth Myhra 2023-08-01 20:53:43 +02:00 committed by Andreas Kling
parent d923c2dd1b
commit cf2c2cb4d7

View file

@ -101,27 +101,24 @@ public:
} else if (value.is_string()) { } else if (value.is_string()) {
m_serialized.append(ValueTag::StringPrimitive); m_serialized.append(ValueTag::StringPrimitive);
TRY(serialize_string(m_serialized, value.as_string())); TRY(serialize_string(m_serialized, value.as_string()));
} else if (value.is_object()) { } else if (value.is_object() && is<JS::BooleanObject>(value.as_object())) {
auto& value_object = value.as_object(); m_serialized.append(ValueTag::BooleanObject);
if (is<JS::BooleanObject>(value_object)) { auto& boolean_object = static_cast<JS::BooleanObject&>(value.as_object());
m_serialized.append(ValueTag::BooleanObject); m_serialized.append(bit_cast<u32>(static_cast<u32>(boolean_object.boolean())));
auto& boolean_object = static_cast<JS::BooleanObject&>(value_object); } else if (value.is_object() && is<JS::NumberObject>(value.as_object())) {
m_serialized.append(bit_cast<u32>(static_cast<u32>(boolean_object.boolean()))); m_serialized.append(ValueTag::NumberObject);
} else if (is<JS::NumberObject>(value_object)) { auto& number_object = static_cast<JS::NumberObject&>(value.as_object());
m_serialized.append(ValueTag::NumberObject); double const number = number_object.number();
auto& number_object = static_cast<JS::NumberObject&>(value_object); m_serialized.append(bit_cast<u32*>(&number), 2);
double const number = number_object.number(); } else if (value.is_object() && is<JS::StringObject>(value.as_object())) {
m_serialized.append(bit_cast<u32*>(&number), 2); m_serialized.append(ValueTag::StringObject);
} else if (is<JS::StringObject>(value_object)) { auto& string_object = static_cast<JS::StringObject&>(value.as_object());
m_serialized.append(ValueTag::StringObject); TRY(serialize_string(m_serialized, string_object.primitive_string()));
auto& string_object = static_cast<JS::StringObject&>(value_object); } else if (value.is_object() && is<JS::Date>(value.as_object())) {
TRY(serialize_string(m_serialized, string_object.primitive_string())); m_serialized.append(ValueTag::DateObject);
} else if (is<JS::Date>(value_object)) { auto& date_object = static_cast<JS::Date&>(value.as_object());
m_serialized.append(ValueTag::DateObject); double const date_value = date_object.date_value();
auto& date_object = static_cast<JS::Date&>(value_object); m_serialized.append(bit_cast<u32*>(&date_value), 2);
double const date_value = date_object.date_value();
m_serialized.append(bit_cast<u32*>(&date_value), 2);
}
} else { } else {
// TODO: Define many more types // TODO: Define many more types
m_error = "Unsupported type"sv; m_error = "Unsupported type"sv;