[macruby-changes] [3822] MacRuby/trunk/io.c
source_changes at macosforge.org
source_changes at macosforge.org
Thu Mar 18 20:39:45 PDT 2010
Revision: 3822
http://trac.macosforge.org/projects/ruby/changeset/3822
Author: lsansonetti at apple.com
Date: 2010-03-18 20:39:43 -0700 (Thu, 18 Mar 2010)
Log Message:
-----------
fixed a bug in IO#gets when the separator is more than 1 character
Modified Paths:
--------------
MacRuby/trunk/io.c
Modified: MacRuby/trunk/io.c
===================================================================
--- MacRuby/trunk/io.c 2010-03-19 03:24:13 UTC (rev 3821)
+++ MacRuby/trunk/io.c 2010-03-19 03:39:43 UTC (rev 3822)
@@ -1344,9 +1344,9 @@
rb_bstr_resize(bstr, s);
uint8_t *buf = rb_bstr_bytes(bstr);
- uint8_t *tmp_buf = (uint8_t *)malloc(seplen);
while (true) {
- if (rb_io_read_internal(io_struct, tmp_buf, seplen) != seplen) {
+ uint8_t c = 0;
+ if (rb_io_read_internal(io_struct, &c, 1) != 1) {
break;
}
if (data_read >= s) {
@@ -1354,14 +1354,15 @@
rb_bstr_resize(bstr, s);
buf = rb_bstr_bytes(bstr);
}
- memcpy(&buf[data_read], tmp_buf, seplen);
- data_read += seplen;
+ buf[data_read] = c;
+ data_read += 1;
- if (memcmp(tmp_buf, sepstr, seplen) == 0) {
+ if (data_read >= seplen
+ && memcmp(&buf[data_read - seplen], sepstr,
+ seplen) == 0) {
break;
}
}
- free(tmp_buf);
if (data_read == 0) {
return Qnil;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100318/cc21d68e/attachment-0001.html>
More information about the macruby-changes
mailing list