From: "brixen (Brian Ford)" Date: 2012-10-27T06:46:11+09:00 Subject: [ruby-core:48369] [ruby-trunk - Bug #7220] StringIO#initialize_copy causes aliasing between the objects Issue #7220 has been updated by brixen (Brian Ford). If dup(2) functionality is actually needed, create an IO.system_dup method that return a dup(2) fd and use that fd in IO.new/IO.for_fd. The fact there there is a dup() system call should not make IO.dup inconsistent with the semantics of every other core #dup method. ---------------------------------------- Bug #7220: StringIO#initialize_copy causes aliasing between the objects https://bugs.ruby-lang.org/issues/7220#change-31680 Author: brixen (Brian Ford) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] 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" => # 1.9.3p286 :003 > b = StringIO.new => # 1.9.3p286 :004 > b.send :initialize_copy, a => # 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/