Skip to content

Commit

Permalink
doc: clarify Buffer.from when using ArrayBuffer
Browse files Browse the repository at this point in the history
Fixes: #31348
Signed-off-by: James M Snell <jasnell@gmail.com>

PR-URL: #36785
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
jasnell authored and targos committed May 1, 2021
1 parent 67a6e9c commit dc15608
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion doc/api/buffer.md
Expand Up @@ -599,7 +599,7 @@ added: v5.10.0
This creates a view of the [`ArrayBuffer`][] without copying the underlying
memory. For example, when passed a reference to the `.buffer` property of a
[`TypedArray`][] instance, the newly created `Buffer` will share the same
allocated memory as the [`TypedArray`][].
allocated memory as the [`TypedArray`][]'s underlying `ArrayBuffer`.

```js
const arr = new Uint16Array(2);
Expand Down Expand Up @@ -635,6 +635,21 @@ A `TypeError` will be thrown if `arrayBuffer` is not an [`ArrayBuffer`][] or a
[`SharedArrayBuffer`][] or another type appropriate for `Buffer.from()`
variants.

It is important to remember that a backing `ArrayBuffer` can cover a range
of memory that extends beyond the bounds of a `TypedArray` view. A new
`Buffer` created using the `buffer` property of a `TypedArray` may extend
beyond the range of the `TypedArray`:

```js
const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
console.log(arrA.buffer === arrB.buffer); // true

const buf = Buffer.from(arrB.buffer);
console.log(buf);
// Prints: <Buffer 63 64 65 66>
```

### Static method: `Buffer.from(buffer)`
<!-- YAML
added: v5.10.0
Expand Down

0 comments on commit dc15608

Please sign in to comment.