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

source_changes at macosforge.org source_changes at macosforge.org
Sun Nov 2 22:56:04 PST 2008


Revision: 705
          http://trac.macosforge.org/projects/ruby/changeset/705
Author:   lsansonetti at apple.com
Date:     2008-11-02 22:56:04 -0800 (Sun, 02 Nov 2008)
Log Message:
-----------
fixed a bug with io_fwrite where bytestrings would be created too late

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

Modified: MacRuby/trunk/io.c
===================================================================
--- MacRuby/trunk/io.c	2008-11-03 05:21:14 UTC (rev 704)
+++ MacRuby/trunk/io.c	2008-11-03 06:56:04 UTC (rev 705)
@@ -690,6 +690,7 @@
 io_fwrite(VALUE str, rb_io_t *fptr)
 {
     long len, n, r, l, offset = 0;
+    void *cstr;
 
     /*
      * If an external encoding was specified and it differs from
@@ -711,6 +712,7 @@
 	}
     }
 
+    cstr = (void *)RSTRING_PTR(str); /* generate bytestring if needed */
     len = RSTRING_LEN(str);
     if ((n = len) <= 0) {
 	return n;
@@ -729,7 +731,7 @@
                 MEMMOVE(fptr->wbuf, fptr->wbuf+fptr->wbuf_off, char, fptr->wbuf_len);
                 fptr->wbuf_off = 0;
             }
-            MEMMOVE(fptr->wbuf+fptr->wbuf_off+fptr->wbuf_len, RSTRING_PTR(str)+offset, char, len);
+            MEMMOVE(fptr->wbuf+fptr->wbuf_off+fptr->wbuf_len, cstr+offset, char, len);
             fptr->wbuf_len += len;
             n = 0;
         }
@@ -752,7 +754,7 @@
             wsplit_p(fptr)) {
             l = PIPE_BUF;
         }
-	r = rb_write_internal(fptr->fd, ((char *)RSTRING_PTR(str))+offset, l);
+	r = rb_write_internal(fptr->fd, cstr+offset, l);
 	/* xxx: other threads may modify given string. */
         if (r == n) {
 	    return len;
@@ -775,7 +777,7 @@
             MEMMOVE(fptr->wbuf, fptr->wbuf+fptr->wbuf_off, char, fptr->wbuf_len);
         fptr->wbuf_off = 0;
     }
-    MEMMOVE(fptr->wbuf+fptr->wbuf_off+fptr->wbuf_len, RSTRING_PTR(str)+offset, char, len);
+    MEMMOVE(fptr->wbuf+fptr->wbuf_off+fptr->wbuf_len, cstr+offset, char, len);
     fptr->wbuf_len += len;
     return len;
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20081102/3cb36b9f/attachment.html>


More information about the macruby-changes mailing list