diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | io.c | 4 |
2 files changed, 8 insertions, 1 deletions
@@ -1,4 +1,7 @@ -Tue Feb 28 18:33:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> +Tue Feb 28 18:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * io.c (io_binwrite, rb_io_syswrite): use shared frozen source + strings. * io.c (io_fread, io_getpartial, rb_io_sysread): set buffer size after check if readable, which can cause thread switch. @@ -1243,6 +1243,8 @@ io_write(VALUE io, VALUE str, int nosync) io = tmp; if (RSTRING_LEN(str) == 0) return INT2FIX(0); + str = rb_str_new_frozen(str); + GetOpenFile(io, fptr); rb_io_check_writable(fptr); @@ -4219,6 +4221,8 @@ rb_io_syswrite(VALUE io, VALUE str) GetOpenFile(io, fptr); rb_io_check_writable(fptr); + str = rb_str_new_frozen(str); + if (fptr->wbuf.len) { rb_warn("syswrite for buffered IO"); } |