Bug #171 [ruby-core:17277]

StringIO#each and StringIO#readlines does change $_, IO#each and IO#readlines do not

Added by Arthur Schreiber 168 days ago. Updated 168 days ago.

Status :Closed Start :06/16/2008
Priority :Normal Due date :
Assigned to :- % Done :

100%

Category :-
Target version :-

Description

Changeset r17352 has fixed the issue reported in #159, but has introduced two new ones:

First: StringIO#readlines was changed to set $_ to nil:

  $_ = "test"
  File.open("test.file") { |f| f.readlines } # => ["line 1\n", "line 2\n", "line 3"]
  $_ # => "test"

  require "stringio"
  $_ = "test"
  StringIO.new("line 1\nline 2\nline 3").readlines # => ["line 1\n", "line 2\n", "line 3"]
  $_ # => nil


Second: StringIO#each was changed to change $_ on each yield:

  $_ = "test"
  File.open("test.file") do |f|
    f.each do |l|
      # >> Line: "line 1\n" - "test"
      # >> Line: "line 2\n" - "test"
      # >> Line: "line 3" - "test"
      puts "Line: #{l.inspect} - #{$_.inspect}"
    end
  end
  $_ # => "test"

  require "stringio"
  $_ = "test"
  strio = StringIO.new("line 1\nline 2\nline 3")
  strio.each do |l|
    # >> Line: "line 1\n" - "line 1\n"
    # >> Line: "line 2\n" - "line 2\n"
    # >> Line: "line 3" - "line 3"
    puts "Line: #{l.inspect} - #{$_.inspect}"
  end
  $_ # => "line 3"

Associated revisions

Revision 17366
Added by nobu 168 days ago

  • ext/stringio/stringio.c (strio_each, strio_readlines): IO#each and IO#readlines do not affect $_. [ruby-core:17277]

History

06/16/2008 10:07 PM - Nobuyoshi Nakada

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
Applied in changeset r17366.

Also available in: Atom PDF