[#38647] [Ruby 1.9 - Bug #5130][Open] Thread.pass sticks on OpenBSD — Yui NARUSE <naruse@...>

16 messages 2011/08/01

[#38653] [Ruby 1.9 - Bug #5135][Open] Ruby 1.9.3-preview1 tests fails in Fedora Rawhide — Vit Ondruch <v.ondruch@...>

31 messages 2011/08/01

[#38666] [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Yehuda Katz <wycats@...>

61 messages 2011/08/01
[#38667] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Aaron Patterson <aaron@...> 2011/08/01

On Tue, Aug 02, 2011 at 07:35:15AM +0900, Yehuda Katz wrote:

[#38669] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Urabe Shyouhei <shyouhei@...> 2011/08/01

(08/02/2011 07:46 AM), Aaron Patterson wrote:

[#38671] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Eric Wong <normalperson@...> 2011/08/01

Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:

[#38695] [Ruby 1.9 - Bug #5144][Open] Remove GPL file from repository — Vit Ondruch <v.ondruch@...>

17 messages 2011/08/02

[#38706] [Ruby 1.9 - Bug #5147][Open] mkmf should not require static library when ruby is built with --enable-shared — Vit Ondruch <v.ondruch@...>

9 messages 2011/08/02

[#38894] Why Ruby has versioned paths? — V咜 Ondruch <v.ondruch@...>

Hello, could somebody please elaborate about reasons why Ruby uses versioned

9 messages 2011/08/10

[#38972] [Ruby 1.9 - Bug #5193][Open] ruby_thread_data_type linker errors fixed with RUBY_EXTERN — Charlie Savage <cfis@...>

28 messages 2011/08/16

[#38980] :symbol.is_a?(String) — Magnus Holm <judofyr@...>

http://viewsourcecode.org/why/redhanded/inspect/SymbolIs_aString.html

8 messages 2011/08/16

[#39025] [Ruby 1.9 - Feature #5206][Open] ruby -K should warn — Eric Hodel <drbrain@...7.net>

14 messages 2011/08/19

[#39062] Releasing r33028 as Ruby 1.9.3 RC1 — Yugui <yugui@...>

Hi,

17 messages 2011/08/23

[#39093] [Ruby 1.9 - Bug #5227][Open] Float#round fails on corner cases — Marc-Andre Lafortune <ruby-core@...>

14 messages 2011/08/24
[#39115] [Ruby 1.9 - Bug #5227][Assigned] Float#round fails on corner cases — Yui NARUSE <naruse@...> 2011/08/26

[#39126] Re: [Ruby 1.9 - Bug #5227][Assigned] Float#round fails on corner cases — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2011/08/26

Hi

[#39120] [Ruby 1.9 - Bug #5233][Open] OpenSSL::SSL::SSLSocket has problems with encodings other than "ascii" — Niklas Baumstark <niklas.baumstark@...>

9 messages 2011/08/26

[#39142] [Ruby 1.9 - Bug #5239][Open] bootstraptest/runner.rb: assert_normal_exit logic broken on Debian/GNU kFreeBSD — Lucas Nussbaum <lucas@...>

11 messages 2011/08/27

[#39162] [Ruby 1.9 - Bug #5244][Open] Continuation causes Bus Error on Debian sparc — Lucas Nussbaum <lucas@...>

29 messages 2011/08/28

[ruby-core:39145] Re: [Ruby 1.9 - Bug #5237] IO.copy_stream calls #read on an object infinitely many times

From: brian ford <brixen@...>
Date: 2011-08-27 17:33:42 UTC
List: ruby-core #39145
On Sat, Aug 27, 2011 at 3:54 AM, Eric Wong <normalperson@yhbt.net> wrote:
>
> Issue #5237 has been updated by Eric Wong.
>
> File 0001-avoid-infinite-loop-of-IO.copy_stream.patch added
>
> The class that implements an IO#read-like method without clearing
> the destination buffer on EOF is arguably broken, but infinite
> looping is bad, I think.

Ah, you are right, it really should replace buffer with "" (according
to the code) and return nil according to the docs. Seems more than a
little weird, however, to empty the buffer to signal EOF, especially
since the buffer argument is optional.

Cheers,
Brian

>
> The attached simple patch should fix the issue. lso available via git:
> it pull git://bogomips.org/ruby.git copy-stream-infinite-loop
>
> ----------------------------------------
> Bug #5237: IO.copy_stream calls #read on an object infinitely many times
> http://redmine.ruby-lang.org/issues/5237
>
> Author: Brian Ford
> Status: Open
> Priority: Normal
> Assignee:
> Category: core
> Target version:
> ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
>
>
> The code for IO.copy_stream appears to support passing any object that implements #readpartial or #read. For example, passing an instance of StringIO works just fine:
>
> sasha:rubinius2.0 brian$ irb
> ruby-1.9.2-p290 :001 > puts RUBY_DESCRIPTION
> ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
> > nil
> ruby-1.9.2-p290 :002 > require 'stringio'
> > true
> ruby-1.9.2-p290 :003 > s = StringIO.new "this is a test"
> > #<StringIO:0x00000100851190>
> ruby-1.9.2-p290 :004 > IO.copy_stream s, "copy_stream_stringio"
> > 14
> ruby-1.9.2-p290 :005 > IO.read "copy_stream_stringio"
> > "this is a test"
> ruby-1.9.2-p290 :006 >
>
> However, passing an object that implements eg #read according to the specification of IO#read, causes IO.copy_stream to endlessly call #read on the object:
>
> class A
> ef initialize
> count = 0
> nd
>
> ef read(bytes, buffer)
> rint "read: #{@count += 1}\r"
> uffer.replace "this is a test"
> eturn nil
> nd
> end
>
> a = A.new
> IO.copy_stream a, "copy_stream_test"
>
> ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
> copy_stream_bug.rb:7:in `write': Interrupt
> rom copy_stream_bug.rb:7:in `print'
> rom copy_stream_bug.rb:7:in `read'
> rom copy_stream_bug.rb:14:in `copy_stream'
> rom copy_stream_bug.rb:14:in `<main>'
>
> Thanks,
> Brian
>
>
> --
> http://redmine.ruby-lang.org
>
>

In This Thread