diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.cpp b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.cpp index 66d59f844b2..77394e8a2ca 100644 --- a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.cpp +++ b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.cpp @@ -11,23 +11,23 @@ namespace JS { -ThrowCompletionOr ArrayBuffer::create(Realm& realm, size_t byte_length) +ThrowCompletionOr> ArrayBuffer::create(Realm& realm, size_t byte_length) { auto buffer = ByteBuffer::create_zeroed(byte_length); if (buffer.is_error()) return realm.vm().throw_completion(ErrorType::NotEnoughMemoryToAllocate, byte_length); - return realm.heap().allocate(realm, buffer.release_value(), *realm.intrinsics().array_buffer_prototype()); + return NonnullGCPtr { *realm.heap().allocate(realm, buffer.release_value(), *realm.intrinsics().array_buffer_prototype()) }; } -ArrayBuffer* ArrayBuffer::create(Realm& realm, ByteBuffer buffer) +NonnullGCPtr ArrayBuffer::create(Realm& realm, ByteBuffer buffer) { - return realm.heap().allocate(realm, move(buffer), *realm.intrinsics().array_buffer_prototype()); + return *realm.heap().allocate(realm, move(buffer), *realm.intrinsics().array_buffer_prototype()); } -ArrayBuffer* ArrayBuffer::create(Realm& realm, ByteBuffer* buffer) +NonnullGCPtr ArrayBuffer::create(Realm& realm, ByteBuffer* buffer) { - return realm.heap().allocate(realm, buffer, *realm.intrinsics().array_buffer_prototype()); + return *realm.heap().allocate(realm, buffer, *realm.intrinsics().array_buffer_prototype()); } ArrayBuffer::ArrayBuffer(ByteBuffer buffer, Object& prototype) diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h index 09fc8739474..16158e7e7d4 100644 --- a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h +++ b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h @@ -25,9 +25,9 @@ class ArrayBuffer : public Object { JS_OBJECT(ArrayBuffer, Object); public: - static ThrowCompletionOr create(Realm&, size_t); - static ArrayBuffer* create(Realm&, ByteBuffer); - static ArrayBuffer* create(Realm&, ByteBuffer*); + static ThrowCompletionOr> create(Realm&, size_t); + static NonnullGCPtr create(Realm&, ByteBuffer); + static NonnullGCPtr create(Realm&, ByteBuffer*); virtual ~ArrayBuffer() override = default; diff --git a/Userland/Libraries/LibJS/Runtime/TypedArray.cpp b/Userland/Libraries/LibJS/Runtime/TypedArray.cpp index 976dec41808..f0de705e982 100644 --- a/Userland/Libraries/LibJS/Runtime/TypedArray.cpp +++ b/Userland/Libraries/LibJS/Runtime/TypedArray.cpp @@ -424,13 +424,13 @@ void TypedArrayBase::visit_edges(Visitor& visitor) ThrowCompletionOr ClassName::create(Realm& realm, u32 length, FunctionObject& new_target) \ { \ auto* prototype = TRY(get_prototype_from_constructor(realm.vm(), new_target, &Intrinsics::snake_name##_prototype)); \ - auto* array_buffer = TRY(ArrayBuffer::create(realm, length * sizeof(UnderlyingBufferDataType))); \ + auto array_buffer = TRY(ArrayBuffer::create(realm, length * sizeof(UnderlyingBufferDataType))); \ return realm.heap().allocate(realm, *prototype, length, *array_buffer); \ } \ \ ThrowCompletionOr ClassName::create(Realm& realm, u32 length) \ { \ - auto* array_buffer = TRY(ArrayBuffer::create(realm, length * sizeof(UnderlyingBufferDataType))); \ + auto array_buffer = TRY(ArrayBuffer::create(realm, length * sizeof(UnderlyingBufferDataType))); \ return create(realm, length, *array_buffer); \ } \ \ diff --git a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp index 1e78969d21a..37edb0b28ce 100644 --- a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp +++ b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp @@ -84,7 +84,7 @@ JS::Promise* SubtleCrypto::digest(DeprecatedString const& algorithm, JS::Handle< return promise; } - auto* result = JS::ArrayBuffer::create(realm, result_buffer.release_value()); + auto result = JS::ArrayBuffer::create(realm, result_buffer.release_value()); // 9. Resolve promise with result. promise->fulfill(result); diff --git a/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp b/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp index fab0a4b274c..3624e03c28a 100644 --- a/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp +++ b/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp @@ -39,7 +39,7 @@ JS::Uint8Array* TextEncoder::encode(DeprecatedString const& input) const auto byte_buffer = input.to_byte_buffer(); auto array_length = byte_buffer.size(); - auto* array_buffer = JS::ArrayBuffer::create(realm(), move(byte_buffer)); + auto array_buffer = JS::ArrayBuffer::create(realm(), move(byte_buffer)); return JS::Uint8Array::create(realm(), array_length, *array_buffer); } diff --git a/Userland/Libraries/LibWeb/FileAPI/Blob.cpp b/Userland/Libraries/LibWeb/FileAPI/Blob.cpp index 180b8344579..485ec4d3641 100644 --- a/Userland/Libraries/LibWeb/FileAPI/Blob.cpp +++ b/Userland/Libraries/LibWeb/FileAPI/Blob.cpp @@ -266,7 +266,7 @@ JS::Promise* Blob::array_buffer() promise->reject(buffer_result.release_error().value().release_value()); return promise; } - auto* buffer = buffer_result.release_value(); + auto buffer = buffer_result.release_value(); buffer->buffer().overwrite(0, m_byte_buffer.data(), m_byte_buffer.size()); // 4. Return the result of transforming promise by a fulfillment handler that returns a new ArrayBuffer whose contents are its first argument. diff --git a/Userland/Libraries/LibWeb/WebAssembly/WebAssemblyMemoryPrototype.cpp b/Userland/Libraries/LibWeb/WebAssembly/WebAssemblyMemoryPrototype.cpp index 0bf52aff156..854852f096b 100644 --- a/Userland/Libraries/LibWeb/WebAssembly/WebAssemblyMemoryPrototype.cpp +++ b/Userland/Libraries/LibWeb/WebAssembly/WebAssemblyMemoryPrototype.cpp @@ -50,7 +50,7 @@ JS_DEFINE_NATIVE_FUNCTION(WebAssemblyMemoryPrototype::buffer_getter) if (!memory) return JS::js_undefined(); - auto* array_buffer = JS::ArrayBuffer::create(realm, &memory->data()); + auto array_buffer = JS::ArrayBuffer::create(realm, &memory->data()); array_buffer->set_detach_key(JS::PrimitiveString::create(vm, "WebAssembly.Memory")); return array_buffer; }