[macruby-changes] [4877] MacRuby/trunk/io.c

source_changes at macosforge.org source_changes at macosforge.org
Thu Nov 4 01:02:15 PDT 2010


Revision: 4877
          http://trac.macosforge.org/projects/ruby/changeset/4877
Author:   watson1978 at gmail.com
Date:     2010-11-04 01:02:11 -0700 (Thu, 04 Nov 2010)
Log Message:
-----------
IO#gets(limit) will return nil when calls at EOF. Fixed the bug which IO#readlines(limit) caught in an infinite loop.

Test Script:
{{{
require 'test/unit/assertions.rb'
include Test::Unit::Assertions

string = "0123"

r, w = IO.pipe
w.print string
w.close
assert_equal("0123", r.gets(10))
assert_nil(r.gets(10))
assert_nil(r.gets(nil, 10))
assert_nil(r.gets)
r.close

string = "0123"

r, w = IO.pipe
w.print string
w.close
assert_equal(["0123"], r.readlines(10))
r.close

puts :ok
}}}

Modified Paths:
--------------
    MacRuby/trunk/io.c

Modified: MacRuby/trunk/io.c
===================================================================
--- MacRuby/trunk/io.c	2010-11-04 01:07:33 UTC (rev 4876)
+++ MacRuby/trunk/io.c	2010-11-04 08:02:11 UTC (rev 4877)
@@ -1402,6 +1402,9 @@
 	rb_bstr_resize(bstr, line_limit);
 	uint8_t *bytes = rb_bstr_bytes(bstr);
 	long r = rb_io_read_internal(io_struct, bytes, line_limit);
+	if (r == 0) {
+	    return Qnil;
+	}
 
 	CFRange range = CFStringFind((CFStringRef)bstr, (CFStringRef)sep, 0);
 	if (range.location != kCFNotFound) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101104/3e42ef39/attachment.html>


More information about the macruby-changes mailing list