GeezerVison is showing github.com — doc: clarify Buffer.from when using ArrayBuffer · nodejs/node@c6eb2b4
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: doc/api/buffer.md +16-1Lines changed: 16 additions & 1 deletion - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -612,7 +612,7 @@ added: v5.10.0 |
612 | 612 | This creates a view of the [`ArrayBuffer`][] without copying the underlying |
613 | 613 | memory. For example, when passed a reference to the `.buffer` property of a |
614 | 614 | [`TypedArray`][] instance, the newly created `Buffer` will share the same |
615 | | -allocated memory as the [`TypedArray`][]. |
| 615 | +allocated memory as the [`TypedArray`][]'s underlying `ArrayBuffer`. |
616 | 616 |
|
617 | 617 | ```js |
618 | 618 | const arr = new Uint16Array(2); |
@@ -648,6 +648,21 @@ A `TypeError` will be thrown if `arrayBuffer` is not an [`ArrayBuffer`][] or a |
648 | 648 | [`SharedArrayBuffer`][] or another type appropriate for `Buffer.from()` |
649 | 649 | variants. |
650 | 650 |
|
| 651 | +It is important to remember that a backing `ArrayBuffer` can cover a range |
| 652 | +of memory that extends beyond the bounds of a `TypedArray` view. A new |
| 653 | +`Buffer` created using the `buffer` property of a `TypedArray` may extend |
| 654 | +beyond the range of the `TypedArray`: |
| 655 | + |
| 656 | +```js |
| 657 | +const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements |
| 658 | +const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements |
| 659 | +console.log(arrA.buffer === arrB.buffer); // true |
| 660 | + |
| 661 | +const buf = Buffer.from(arrB.buffer); |
| 662 | +console.log(buf); |
| 663 | +// Prints: <Buffer 63 64 65 66> |
| 664 | +``` |
| 665 | + |
651 | 666 | ### Static method: `Buffer.from(buffer)` |
652 | 667 | <!-- YAML |
653 | 668 | added: v5.10.0 |
|