summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r--src/wasm-interpreter.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index b683de632..203786e72 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -1685,7 +1685,7 @@ public:
LiteralList& arguments,
Type result,
SubType& instance) = 0;
- virtual void growMemory(Address oldSize, Address newSize) = 0;
+ virtual bool growMemory(Address oldSize, Address newSize) = 0;
virtual void trap(const char* why) = 0;
virtual void throwException(Literal exnref) = 0;
@@ -2406,8 +2406,13 @@ private:
if (newSize > instance.wasm.memory.max) {
return fail;
}
- instance.externalInterface->growMemory(
- instance.memorySize * Memory::kPageSize, newSize * Memory::kPageSize);
+ if (!instance.externalInterface->growMemory(
+ instance.memorySize * Memory::kPageSize,
+ newSize * Memory::kPageSize)) {
+ // We failed to grow the memory in practice, even though it was valid
+ // to try to do so.
+ return fail;
+ }
instance.memorySize = newSize;
return ret;
}