Project

General

Profile

Actions

Bug #11445

closed

Ruby 1.9.3 - StringIO clone method creates new instance but somehow connected with the original instance

Added by michal.brunat (Michal Brunát) almost 9 years ago. Updated almost 9 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
[ruby-core:<unknown>]

Description

In Ruby 1.9.3 cloned StringIO instance has influence on close state of original instance:

require 'stringio'

sio1 = StringIO.new( 'abc' )
sio2 = sio1.clone

sio2.read
sio1.pos  # => 3, expected 0

sio2.close
sio1.closed?  # => true, expected false

If File is used instead of StringIO, close state is not shared between instances (position is).

This behaviour has changed in Ruby 2.0.0 (cloned StringIO instance does not close original instance).

It matters what definition for IO clone is, whether to share attributes (e.g. pos) and/or state (closed?) but the later is acting differently in 1.9.3 for StringIO and File.

Actions

Also available in: Atom PDF

Like0
Like0