js: Handle detached ArrayBuffer in print_typed_array()

Co-authored-by: Idan Horowitz <idan.horowitz@gmail.com>
This commit is contained in:
Linus Groh 2021-07-04 17:36:10 +01:00
parent bb1a98d809
commit c9d8aa6139
Notes: sideshowbarker 2024-07-18 10:26:50 +09:00

View file

@ -378,6 +378,7 @@ static void print_number(T number) requires IsArithmetic<T>
static void print_typed_array(const JS::Object& object, HashTable<JS::Object*>& seen_objects)
{
auto& typed_array_base = static_cast<const JS::TypedArrayBase&>(object);
auto& array_buffer = *typed_array_base.viewed_array_buffer();
auto length = typed_array_base.array_length();
print_type(object.class_name());
out("\n length: ");
@ -386,8 +387,10 @@ static void print_typed_array(const JS::Object& object, HashTable<JS::Object*>&
print_value(JS::Value(typed_array_base.byte_length()), seen_objects);
out("\n buffer: ");
print_type("ArrayBuffer");
out(" @ {:p}", typed_array_base.viewed_array_buffer());
if (!length)
if (array_buffer.is_detached())
out(" (detached)");
out(" @ {:p}", &array_buffer);
if (!length || array_buffer.is_detached())
return;
outln();
// FIXME: This kinda sucks.