| 634 | |
| 635 | |
| 636 | function sliceBuffer(buffer, offset, length) { |
| 637 | if (typeof buffer === 'string') { |
| 638 | buffer = Buffer.from(buffer); |
| 639 | } else if (!isArrayBufferView(buffer)) { |
| 640 | throw new ERR_INVALID_ARG_TYPE('buffer', |
| 641 | ['Buffer', |
| 642 | 'TypedArray', |
| 643 | 'DataView', |
| 644 | 'string'], |
| 645 | buffer); |
| 646 | } |
| 647 | |
| 648 | offset = offset >>> 0; |
| 649 | length = length >>> 0; |
| 650 | if (offset > buffer.byteLength) { |
| 651 | throw new ERR_BUFFER_OUT_OF_BOUNDS('offset'); |
| 652 | } |
| 653 | |
| 654 | if (offset + length > buffer.byteLength) { |
| 655 | throw new ERR_BUFFER_OUT_OF_BOUNDS('length'); |
| 656 | } |
| 657 | |
| 658 | return Buffer.from(buffer.buffer, buffer.byteOffset + offset, length); |
| 659 | } |
| 660 | |
| 661 | |
| 662 | function fixBufferList(list) { |