Skip to content

Commit

Permalink
add missing Buffer constants (feross#312)
Browse files Browse the repository at this point in the history
  • Loading branch information
urg authored Oct 8, 2023
1 parent bbceed0 commit 7ca8fc5
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
16 changes: 16 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@ exports.INSPECT_MAX_BYTES = 50
const K_MAX_LENGTH = 0x7fffffff
exports.kMaxLength = K_MAX_LENGTH

/**
* Not used internally, but exported to maintain api compatability
* Uses 32-bit implementation value from Node defined in String:kMaxLength
*
* @see https://github.com/nodejs/node/blob/main/deps/v8/include/v8-primitive.h#L126
* @see https://github.com/nodejs/node/blob/main/src/node_buffer.cc#L1298
* @see https://github.com/nodejs/node/blob/main/lib/buffer.js#L142
*/
const K_STRING_MAX_LENGTH = (1 << 28) - 16
exports.kStringMaxLength = K_STRING_MAX_LENGTH

exports.constants = {
MAX_LENGTH: K_MAX_LENGTH,
MAX_STRING_LENGTH: K_STRING_MAX_LENGTH
}

/**
* If `Buffer.TYPED_ARRAY_SUPPORT`:
* === true Use Uint8Array implementation (fastest)
Expand Down
21 changes: 14 additions & 7 deletions test/node/test-buffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var Buffer = require('../../').Buffer;
var common = { skip: function () {} };
var assert = require('assert');

const buffer = require('../../');
var Buffer = require('../../').Buffer;
var SlowBuffer = require('../../').SlowBuffer;

Expand Down Expand Up @@ -442,10 +443,10 @@ for (var i = 0; i < Buffer.byteLength(utf8String); i++) {
{
// Bug regression test
var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語
var buffer = new Buffer(32);
var size = buffer.write(testValue, 0, 'utf8');
// console.log('bytes written to buffer: ' + size);
var slice = buffer.toString('utf8', 0, size);
var testBuffer = new Buffer(32);
var size = testBuffer.write(testValue, 0, 'utf8');
// console.log('bytes written to testBuffer: ' + size);
var slice = testBuffer.toString('utf8', 0, size);
assert.equal(slice, testValue);
}

Expand Down Expand Up @@ -1050,12 +1051,12 @@ Buffer(Buffer(0), 0, 0);

// GH-5110
{
var buffer = new Buffer('test');
var string = JSON.stringify(buffer);
var testBuffer = new Buffer('test');
var string = JSON.stringify(testBuffer);

assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}');

assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) {
assert.deepStrictEqual(testBuffer, JSON.parse(string, function(key, value) {
return value && value.type === 'Buffer'
? new Buffer(value.data)
: value;
Expand Down Expand Up @@ -1498,3 +1499,9 @@ assert.throws(() => Buffer(-100),
assert.throws(() => Buffer(-1),
'"size" argument must not be negative');

// Verify constants
assert.equal(0x7fffffff, buffer.kMaxLength)
assert.equal(buffer.kMaxLength, buffer.constants.MAX_LENGTH)

assert.equal((1 << 28) - 16, buffer.kStringMaxLength)
assert.equal(buffer.kStringMaxLength, buffer.constants.MAX_STRING_LENGTH)

0 comments on commit 7ca8fc5

Please sign in to comment.