Issue #7220 has been updated by brixen (Brian Ford).


drbrain (Eric Hodel) wrote:
> This is intentional behavior which has existed since 1998. It is not a bug.
> 
> When I am working with IOs I expect the ruby methods to follow POSIX conventions more than ruby conventions. This method is not the only one in the standard library that doesn't follow ruby conventions.

Ruby's accidental POSIX semantics are a problem that eg JRuby and any attempt to make Ruby function well on Windows must constantly struggle with. They are not a reason to defend a poor design decision.

----------------------------------------
Feature #7220: Separate IO#dup, StringIO#initialize_copy from dup(2)
https://bugs.ruby-lang.org/issues/7220#change-31772

Author: brixen (Brian Ford)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: Next Major


Calling StringIO#initialize_copy causes the two objects to share the position, and eof status.

Is this a bug?

sasha:rubinius brian$ irb
1.9.3p286 :001 > require 'stringio'
 => true 
1.9.3p286 :002 > a = StringIO.new "abcdefuq"
 => #<StringIO:0x00000101016a88> 
1.9.3p286 :003 > b = StringIO.new
 => #<StringIO:0x00000101010728> 
1.9.3p286 :004 > b.send :initialize_copy, a
 => #<StringIO:0x00000101010728> 
1.9.3p286 :005 > a.pos
 => 0 
1.9.3p286 :006 > b.pos
 => 0 
1.9.3p286 :007 > b.getc
 => "a" 
1.9.3p286 :008 > a.pos
 => 1 
1.9.3p286 :009 > a.getc
 => "b" 
1.9.3p286 :010 > b.pos
 => 2 
1.9.3p286 :011 > b.read
 => "cdefuq" 
1.9.3p286 :012 > a.eof?
 => true 

Thanks,
Brian


-- 
http://bugs.ruby-lang.org/