Project

General

Profile

Bug #20271

Updated by luke-gru (Luke Gruber) 3 months ago

When embedded strings are moved, not all the embedded bytes are aren't copied over to the new embedded string. This shows itself when 
 an embedded string has more than 16 characters. characters, and can also be a problem when the MovedObject has been garbage collected 
 and another object has taken its place in the ruby heap. 

 For example: 

 ```ruby 
 r = Ractor.new { 
   foo = receive 
   puts foo 
   foo 
 } 
 obj = "12345678" * 3 
 puts obj 
 r.send(obj, move: true) 
 r.take 
 ``` 

 ``` 
 123456781234567812345678 
 1234567812345678 
 ``` 

Back