Actions
Bug #20892
closed`ObjectSpace.dump` can produce broken JSON for classes with temporary names
    Bug #20892:
    `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) 12 months ago
          
          
        
        
      
      - Related to Feature #19521: Support for `Module#name=` and `Class#name=`. added
 
        
          
          Updated by byroot (Jean Boussier) 12 months 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.
        
          
          Updated by k0kubun (Takashi Kokubun) 10 months ago
          
          
        
        
      
      - Backport changed from 3.1: DONTNEED, 3.2: DONTNEED, 3.3: REQUIRED to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONE
 
ruby_3_3 merged https://github.com/ruby/ruby/pull/12068. Thank you!
Actions