tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

data-allocation-after-object-creation.js (1118B)


      1 // Copyright (C) 2015 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-arraybuffer-length
      6 description: >
      7  The new ArrayBuffer instance is created prior to allocating the Data Block.
      8 info: |
      9  ArrayBuffer( length )
     10 
     11  ...
     12  6. Return AllocateArrayBuffer(NewTarget, byteLength).
     13 
     14  AllocateArrayBuffer( constructor, byteLength )
     15    1. Let obj be OrdinaryCreateFromConstructor(constructor, "%ArrayBufferPrototype%",
     16       «[[ArrayBufferData]], [[ArrayBufferByteLength]]» ).
     17    2. ReturnIfAbrupt(obj).
     18    ...
     19    4. Let block be CreateByteDataBlock(byteLength).
     20    5. ReturnIfAbrupt(block).
     21    ...
     22 features: [Reflect.construct]
     23 ---*/
     24 
     25 function DummyError() {}
     26 
     27 var newTarget = function() {}.bind(null);
     28 Object.defineProperty(newTarget, "prototype", {
     29  get: function() {
     30    throw new DummyError();
     31  }
     32 });
     33 
     34 assert.throws(DummyError, function() {
     35  // Allocating 7 PiB should fail with a RangeError.
     36  // Math.pow(1024, 5) = 1125899906842624
     37  Reflect.construct(ArrayBuffer, [7 * 1125899906842624], newTarget);
     38 });
     39 
     40 reportCompare(0, 0);