From dc5f213fa0c9cf0b5f2c9c359d701ff1573daea1 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Tue, 11 Apr 2023 22:19:42 +0100 Subject: [PATCH] LibWeb: Handle null values when making args for attributeChangedCallback JS::PrimitiveString::create uses `is_empty()` on DeprecatedString to use the empty string cache on the VM. However, this also considers the DeprecatedString null state to be empty, giving an empty string instead of `null` for null DeprecatedStrings. --- Userland/Libraries/LibWeb/DOM/Attr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/Attr.cpp b/Userland/Libraries/LibWeb/DOM/Attr.cpp index a8735498a8..aaf0b86cce 100644 --- a/Userland/Libraries/LibWeb/DOM/Attr.cpp +++ b/Userland/Libraries/LibWeb/DOM/Attr.cpp @@ -99,9 +99,9 @@ void Attr::handle_attribute_changes(Element& element, DeprecatedString const& ol JS::MarkedVector arguments { vm.heap() }; arguments.append(JS::PrimitiveString::create(vm, local_name())); - arguments.append(JS::PrimitiveString::create(vm, old_value)); - arguments.append(JS::PrimitiveString::create(vm, new_value)); - arguments.append(JS::PrimitiveString::create(vm, namespace_uri())); + arguments.append(old_value.is_null() ? JS::js_null() : JS::PrimitiveString::create(vm, old_value)); + arguments.append(new_value.is_null() ? JS::js_null() : JS::PrimitiveString::create(vm, new_value)); + arguments.append(namespace_uri().is_null() ? JS::js_null() : JS::PrimitiveString::create(vm, namespace_uri())); element.enqueue_a_custom_element_callback_reaction(HTML::CustomElementReactionNames::attributeChangedCallback, move(arguments)); }