diff --git a/Libraries/LibWeb/WebAssembly/Memory.cpp b/Libraries/LibWeb/WebAssembly/Memory.cpp index 60e7de1d9e1..dd065023f1e 100644 --- a/Libraries/LibWeb/WebAssembly/Memory.cpp +++ b/Libraries/LibWeb/WebAssembly/Memory.cpp @@ -39,10 +39,6 @@ WebIDL::ExceptionOr> Memory::construct_impl(JS::Realm& realm, Me auto memory_object = realm.create(realm, *address, shared ? Shared::Yes : Shared::No); - cache.abstract_machine().store().get(*address)->successful_grow_hook = [memory_object] { - MUST(memory_object->reset_the_memory_buffer()); - }; - return memory_object; } @@ -51,6 +47,11 @@ Memory::Memory(JS::Realm& realm, Wasm::MemoryAddress address, Shared shared) , m_address(address) , m_shared(shared) { + auto& cache = Detail::get_cache(realm); + + cache.abstract_machine().store().get(address)->successful_grow_hook = [this] { + MUST(reset_the_memory_buffer()); + }; } void Memory::initialize(JS::Realm& realm) diff --git a/Tests/LibWeb/Text/expected/Wasm/WebAssembly-grow-hook.txt b/Tests/LibWeb/Text/expected/Wasm/WebAssembly-grow-hook.txt new file mode 100644 index 00000000000..ea8f339be68 --- /dev/null +++ b/Tests/LibWeb/Text/expected/Wasm/WebAssembly-grow-hook.txt @@ -0,0 +1,3 @@ +Size before grow: 65536 +Size after grow, before refresh: 0 +Size after grow, after refresh: 131072 diff --git a/Tests/LibWeb/Text/input/Wasm/WebAssembly-grow-hook.html b/Tests/LibWeb/Text/input/Wasm/WebAssembly-grow-hook.html new file mode 100644 index 00000000000..2e4700c1416 --- /dev/null +++ b/Tests/LibWeb/Text/input/Wasm/WebAssembly-grow-hook.html @@ -0,0 +1,22 @@ + + +