Bug #10007
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
~~~ruby ~~~ #!/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"] ~~~