Actions
Bug #10007
closedIO#read does not respect String Copy-On-Write in some cases
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]
Backport:
Description
#!/usr/bin/env ruby
CHUNK_SIZE = 29 # no problems with CHUNK_SIZE = 28
File.open(__FILE__,'r') do |f|
d0 = ''
a = []
f.read(CHUNK_SIZE, d0)
a << d0[15..-2]
a << d0[5..-2]
a << d0[-5..-2]
a << d0[15..-1]
a << d0[5..-1] # <-- only this string will change
a << d0[-5..-1]
p a
f.read(CHUNK_SIZE, d0) # <-- 2nd read
p a
end
output on ruby 1.9.3p448: (all strings are similar before and after 2nd read)
["ruby\n\nCHUNK_S", "r/bin/env ruby\n\nCHUNK_S", "NK_S", "ruby\n\nCHUNK_SI", "r/bin/env ruby\n\nCHUNK_SI", "NK_SI"]
["ruby\n\nCHUNK_S", "r/bin/env ruby\n\nCHUNK_S", "NK_S", "ruby\n\nCHUNK_SI", "r/bin/env ruby\n\nCHUNK_SI", "NK_SI"]
output on ruby 2.0.0p481, 2.0.0p353, 2.0.0p247: (5th string changed unexpectedly!)
["ruby\n\nCHUNK_S", "r/bin/env ruby\n\nCHUNK_S", "NK_S", "ruby\n\nCHUNK_SI", "r/bin/env ruby\n\nCHUNK_SI", "NK_SI"]
["ruby\n\nCHUNK_S", "r/bin/env ruby\n\nCHUNK_S", "NK_S", "ruby\n\nCHUNK_SI", "29\n\nFile.open(__FILE__,'", "NK_SI"]
Actions
Like0
Like0Like0Like0