blob: eb3837e67d6715a9a2f6a2e87a92c3f520f852be [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var Buffer = require('buffer').Buffer;
4
5function hasFrom() {
6 // Node versions 5.x below 5.10 seem to have a `from` method
7 // However, it doesn't clone Buffers
8 // Luckily, it reports as `false` to hasOwnProperty
9 return (Buffer.hasOwnProperty('from') && typeof Buffer.from === 'function');
10}
11
12function cloneBuffer(buf) {
13 if (!Buffer.isBuffer(buf)) {
14 throw new Error('Can only clone Buffer.');
15 }
16
17 if (hasFrom()) {
18 return Buffer.from(buf);
19 }
20
21 var copy = new Buffer(buf.length);
22 buf.copy(copy);
23 return copy;
24}
25
26cloneBuffer.hasFrom = hasFrom;
27
28module.exports = cloneBuffer;