Skip to content
Permalink
Browse files

buffer: inspect extra properties

This makes sure extra properties on buffers are not ignored anymore
when inspecting the buffer.

PR-URL: #25150
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
BridgeAR authored and addaleax committed Dec 20, 2018
1 parent 3350230 commit 68014fbc22b5aed0a2f888766a1b5d942721f650
Showing with 27 additions and 3 deletions.
  1. +23 −1 lib/buffer.js
  2. +3 −1 lib/internal/util/inspect.js
  3. +1 −1 test/parallel/test-buffer-inspect.js
@@ -38,6 +38,13 @@ const {
kStringMaxLength
} = internalBinding('buffer');
const { isAnyArrayBuffer } = internalBinding('types');
const {
getOwnNonIndexProperties,
propertyFilter: {
ALL_PROPERTIES,
ONLY_ENUMERABLE
}
} = internalBinding('util');
const {
customInspectSymbol,
isInsideNodeModules,
@@ -51,6 +58,11 @@ const {
const {
pendingDeprecation
} = internalBinding('config');
const {
formatProperty,
kObjectType
} = require('internal/util/inspect');

const {
ERR_BUFFER_OUT_OF_BOUNDS,
ERR_OUT_OF_RANGE,
@@ -670,10 +682,20 @@ Buffer.prototype.equals = function equals(otherBuffer) {
Buffer.prototype[customInspectSymbol] = function inspect(recurseTimes, ctx) {
const max = exports.INSPECT_MAX_BYTES;
const actualMax = Math.min(max, this.length);
let str = this.hexSlice(0, actualMax).replace(/(.{2})/g, '$1 ').trim();
const remaining = this.length - max;
let str = this.hexSlice(0, actualMax).replace(/(.{2})/g, '$1 ').trim();
if (remaining > 0)
str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`;
// Inspect special properties as well, if possible.
if (ctx) {
const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE;
str += getOwnNonIndexProperties(this, filter).reduce((str, key) => {
// Using `formatProperty()` expects an indentationLvl to be set.
ctx.indentationLvl = 0;
str += `, ${formatProperty(ctx, this, recurseTimes, key, kObjectType)}`;
return str;
}, '');
}
return `<${this.constructor.name} ${str}>`;
};
Buffer.prototype.inspect = Buffer.prototype[customInspectSymbol];
@@ -1236,5 +1236,7 @@ function reduceToSingleString(ctx, output, base, braces) {
}
module.exports = {
inspect
inspect,
formatProperty,
kObjectType
};
@@ -55,4 +55,4 @@ assert.strictEqual(util.inspect(b), expected);
assert.strictEqual(util.inspect(s), expected);

b.inspect = undefined;
assert.strictEqual(util.inspect(b), expected);
assert.strictEqual(util.inspect(b), '<Buffer 31 32, inspect: undefined>');

0 comments on commit 68014fb

Please sign in to comment.
You can’t perform that action at this time.