[macruby-changes] [1287] MacRuby/branches/experimental/io.c
source_changes at macosforge.org
source_changes at macosforge.org
Wed Apr 1 05:49:41 PDT 2009
Revision: 1287
http://trac.macosforge.org/projects/ruby/changeset/1287
Author: vincent.isambart at gmail.com
Date: 2009-04-01 05:49:41 -0700 (Wed, 01 Apr 2009)
Log Message:
-----------
this should fix ungetc
Modified Paths:
--------------
MacRuby/branches/experimental/io.c
Modified: MacRuby/branches/experimental/io.c
===================================================================
--- MacRuby/branches/experimental/io.c 2009-04-01 12:49:35 UTC (rev 1286)
+++ MacRuby/branches/experimental/io.c 2009-04-01 12:49:41 UTC (rev 1287)
@@ -967,8 +967,8 @@
data_read = MIN(io_struct->ungetc_buf_len, len);
memcpy(buffer, &io_struct->ungetc_buf[io_struct->ungetc_buf_pos],
data_read);
- io_struct->ungetc_buf_len -= len;
- io_struct->ungetc_buf_pos += len;
+ io_struct->ungetc_buf_len -= data_read;
+ io_struct->ungetc_buf_pos += data_read;
if (io_struct->ungetc_buf_len == 0) {
xfree(io_struct->ungetc_buf);
io_struct->ungetc_buf = NULL;
@@ -1658,29 +1658,26 @@
}
if (len > io_struct->ungetc_buf_pos) {
- const long delta = io_struct->ungetc_buf_len
- - io_struct->ungetc_buf_pos;
-
// Reallocate the buffer.
GC_WB(&io_struct->ungetc_buf, xrealloc(io_struct->ungetc_buf,
- delta + len));
+ io_struct->ungetc_buf_len + len));
// Shift the buffer.
- memmove(&io_struct->ungetc_buf[delta],
- &io_struct->ungetc_buf[io_struct->ungetc_buf_pos], delta);
+ memmove(&io_struct->ungetc_buf[len],
+ &io_struct->ungetc_buf[io_struct->ungetc_buf_pos], io_struct->ungetc_buf_len);
+
+ io_struct->ungetc_buf_pos = len;
}
// Update position.
io_struct->ungetc_buf_pos -= len;
- if (io_struct->ungetc_buf_pos < 0) {
- io_struct->ungetc_buf_pos = 0;
- }
+ assert(io_struct->ungetc_buf_pos >= 0);
- // Copy the bytes at the position.
+ // Copy the bytes at the new position.
memcpy(&io_struct->ungetc_buf[io_struct->ungetc_buf_pos], bytes, len);
// Update buffer size.
- io_struct->ungetc_buf_len += len - io_struct->ungetc_buf_pos;
+ io_struct->ungetc_buf_len += len;
return Qnil;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090401/ccc18ca1/attachment.html>
More information about the macruby-changes
mailing list