summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js')
-rw-r--r--js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js b/js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js
new file mode 100644
index 000000000..d763d2436
--- /dev/null
+++ b/js/src/jit-test/tests/TypedObject/atopneuteredbuffer.js
@@ -0,0 +1,23 @@
+// Bug 976697. Check for various quirks when instantiating a typed
+// object atop a detached buffer.
+
+if (typeof TypedObject === "undefined")
+ quit();
+
+load(libdir + "asserts.js")
+
+var {StructType, uint32, Object, Any, storage, objectType} = TypedObject;
+
+function main() { // once a C programmer, always a C programmer.
+ var Uints = uint32.array(0);
+ var Unit = new StructType({}); // Empty struct type
+ var buffer = new ArrayBuffer(0); // Empty buffer
+ var p = new Unit(buffer); // OK
+ detachArrayBuffer(buffer);
+ assertThrowsInstanceOf(() => new Unit(buffer), TypeError,
+ "Able to instantiate atop detached buffer");
+ assertThrowsInstanceOf(() => new Uints(buffer), TypeError,
+ "Able to instantiate atop detached buffer");
+}
+
+main();