Project

General

Profile

Actions

Bug #20892

closed

`ObjectSpace.dump` can produce broken JSON for classes with temporary names

Added by byroot (Jean Boussier) 11 days ago. Updated 11 days ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:119903]

Description

puts ObjectSpace.dump(Class.new.tap { |c| c.set_temporary_name('" little boby table') })

Produces the following JSON:

{
  "address":"0x120bea980",
  "type":"CLASS",
  "shape_id":2,
  "slot_size":160,
  "class":"0x120bea840",
  "variation_count":0,
  "superclass":"0x1041ffd38",
  "name":"" little boby table",
  "references":["0x1041ffd38", "0x123e71a98"],
  "memsize":192,
  "flags":{"wb_protected":true}
}

Notice how the name property is broken.

This only impacts 3.3.x, as that's when set_temporary_name was introduced, before that, it was impossible to assign a name that would cause such bug.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #19521: Support for `Module#name=` and `Class#name=`.ClosedActions
Actions #1

Updated by byroot (Jean Boussier) 11 days ago

  • Related to Feature #19521: Support for `Module#name=` and `Class#name=`. added
Actions #2

Updated by byroot (Jean Boussier) 11 days ago

  • Status changed from Open to Closed

Applied in changeset git|ee1cd1656fc667840282a4e9c3f2cc5e3154e50e.


ObjectSpace.dump: handle Module#set_temporary_name

[Bug #20892]

Until the introduction of that method, it was impossible for a
Module name not to be valid JSON, hence it wasn't going through
the slower escaping function.

This assumption no longer hold.

Actions

Also available in: Atom PDF

Like0
Like0Like0