diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b34e904..c27c80f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,7 @@ on: pull_request: branches: - master + - v5.x paths-ignore: - '**.md' jobs: diff --git a/lib/types.js b/lib/types.js index f4d644e6..dc7c69cf 100644 --- a/lib/types.js +++ b/lib/types.js @@ -15,11 +15,10 @@ */ var utils = require('./utils'), - buffer = require('buffer'), // For `SlowBuffer`. + buffer = require('buffer'), util = require('util'); var Buffer = buffer.Buffer; -var SlowBuffer = buffer.SlowBuffer; // Convenience imports. var Tap = utils.Tap; @@ -48,7 +47,7 @@ var TYPES = { var RANDOM = new utils.Lcg(); // Encoding tap (shared for performance). -var TAP = new Tap(new SlowBuffer(1024)); +var TAP = new Tap(utils.newSlowBuffer(1024)); // Currently active logical type, used for name redirection. var LOGICAL_TYPE = null; @@ -453,7 +452,7 @@ Type.isType = function (/* any, [prefix] ... */) { Type.__reset = function (size) { debug('resetting type buffer to %d', size); - TAP.buf = new SlowBuffer(size); + TAP.buf = utils.newSlowBuffer(size); }; Object.defineProperty(Type.prototype, 'branchName', { diff --git a/lib/utils.js b/lib/utils.js index d8c525bd..cd0cb41a 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -11,7 +11,7 @@ var buffer = require('buffer'); var crypto = require('crypto'); var util = require('util'); -var Buffer = buffer.Buffer; +var Buffer = buffer.Buffer; // Shared buffer pool for all taps. var POOL = new BufferPool(4096); @@ -35,6 +35,14 @@ function newBuffer(size) { } } +function newSlowBuffer(size) { + if (typeof Buffer.allocUnsafeSlow == 'function') { + return Buffer.allocUnsafeSlow(size); + } else { + return new buffer.SlowBuffer(size); + } +} + /** * Create a new buffer with the input contents. * @@ -952,6 +960,7 @@ module.exports = { isValidName: isValidName, jsonEnd: jsonEnd, newBuffer: newBuffer, + newSlowBuffer: newSlowBuffer, objectValues: objectValues, qualify: qualify, toMap: toMap,