From 34c5d34b950aabaecac1a47baa360f4528c3d04d Mon Sep 17 00:00:00 2001 From: PrestonLTaylor <95388976+PrestonLTaylor@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:52:47 +0100 Subject: [PATCH] LibJS: Show when an ArrayBuffer is detached when printing --- Userland/Libraries/LibJS/Print.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibJS/Print.cpp b/Userland/Libraries/LibJS/Print.cpp index ae77c6e2d7..2ae606baf7 100644 --- a/Userland/Libraries/LibJS/Print.cpp +++ b/Userland/Libraries/LibJS/Print.cpp @@ -384,13 +384,20 @@ ErrorOr print_promise(JS::PrintContext& print_context, JS::Promise const& ErrorOr print_array_buffer(JS::PrintContext& print_context, JS::ArrayBuffer const& array_buffer, HashTable& seen_objects) { - auto& buffer = array_buffer.buffer(); - auto byte_length = array_buffer.byte_length(); TRY(print_type(print_context, "ArrayBuffer"sv)); + + auto byte_length = array_buffer.byte_length(); TRY(js_out(print_context, "\n byteLength: ")); TRY(print_value(print_context, JS::Value((double)byte_length), seen_objects)); + if (array_buffer.is_detached()) { + TRY(js_out(print_context, "\n Detached")); + return {}; + } + if (byte_length == 0) return {}; + + auto& buffer = array_buffer.buffer(); TRY(js_out(print_context, "\n")); for (size_t i = 0; i < byte_length; ++i) { TRY(js_out(print_context, "{:02x}", buffer[i]));