diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h index ab861d9f21..9f3a240afa 100644 --- a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h +++ b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h @@ -42,6 +42,14 @@ struct DataBlock { } ByteBuffer const& buffer() const { return const_cast(this)->buffer(); } + size_t size() const + { + return byte_buffer.visit( + [](Empty) -> size_t { return 0u; }, + [](ByteBuffer const& buffer) { return buffer.size(); }, + [](ByteBuffer const* buffer) { return buffer->size(); }); + } + Variant byte_buffer; Shared is_shared = { Shared::No }; }; @@ -57,13 +65,7 @@ public: virtual ~ArrayBuffer() override = default; - size_t byte_length() const - { - if (is_detached()) - return 0; - - return m_data_block.buffer().size(); - } + size_t byte_length() const { return m_data_block.size(); } // [[ArrayBufferData]] ByteBuffer& buffer() { return m_data_block.buffer(); }