| 'use strict'; |
| |
| var Buffer = require('buffer').Buffer; |
| |
| function hasFrom() { |
| // Node versions 5.x below 5.10 seem to have a `from` method |
| // However, it doesn't clone Buffers |
| // Luckily, it reports as `false` to hasOwnProperty |
| return (Buffer.hasOwnProperty('from') && typeof Buffer.from === 'function'); |
| } |
| |
| function cloneBuffer(buf) { |
| if (!Buffer.isBuffer(buf)) { |
| throw new Error('Can only clone Buffer.'); |
| } |
| |
| if (hasFrom()) { |
| return Buffer.from(buf); |
| } |
| |
| var copy = new Buffer(buf.length); |
| buf.copy(copy); |
| return copy; |
| } |
| |
| cloneBuffer.hasFrom = hasFrom; |
| |
| module.exports = cloneBuffer; |