Skip to content

util.inspect shouldn’t format objects with the [[IsHTMLDDA]] internal slot as undefined #31889

Closed
@ExE-Boss

Description

@ExE-Boss
  • Version: v13.9.0
  • Platform: Windows 10 v1903 build 18362.657 64‑bit
  • Subsystem: util

What steps will reproduce the bug?

Run node --allow-natives-syntax -p 'util.inspect(%GetUndetectable())'

What is the expected behavior?

> node --allow-natives-syntax -p 'util.inspect(%GetUndetectable())'
[Function (anonymous)]

What do you see instead?

> node --allow-natives-syntax -p 'util.inspect(%GetUndetectable())'
undefined

Additional information

This is because the type check in util.inspect doesn’t account for objects with the [[IsHTMLDDA]] internal slot:

function formatValue(ctx, value, recurseTimes, typedArray) {
// Primitive types cannot have properties.
if (typeof value !== 'object' && typeof value !== 'function') {
return formatPrimitive(ctx.stylize, value, ctx);
}
if (value === null) {
return ctx.stylize('null', 'null');
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    utilIssues and PRs related to the built-in util module.v8 engineIssues and PRs related to the V8 dependency.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions