Actions
Bug #20892
closed`ObjectSpace.dump` can produce broken JSON for classes with temporary names
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.
Updated by byroot (Jean Boussier) about 1 month ago
- Related to Feature #19521: Support for `Module#name=` and `Class#name=`. added
Updated by byroot (Jean Boussier) about 1 month 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
Like0
Like0Like0