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) over 8 years ago. Updated over 8 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 #1

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Description updated (diff)
  • Status changed from Open to Rejected

1.9 has finished.

Actions

Also available in: Atom PDF

Like0
Like0