diff --git a/ChangeLog b/ChangeLog index b1bd6e67cb..be3548be62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 14 17:56:06 2010 Nobuyoshi Nakada + + * io.c (io_shift_cbuf): should terminate. + http://golf.shinh.org/p.rb?DECimal+number+to+BINary#Ruby + Wed Apr 14 16:29:02 2010 Nobuyoshi Nakada * gc.c (GET_STACK_BOUNDS): fixed macro argument names. a patch from diff --git a/io.c b/io.c index 2656b2bae8..3afa413183 100644 --- a/io.c +++ b/io.c @@ -1698,11 +1698,8 @@ io_shift_cbuf(rb_io_t *fptr, int len, VALUE *strp) *strp = str = rb_str_new(fptr->cbuf+fptr->cbuf_off, len); } else { - size_t slen; str = *strp; - slen = RSTRING_LEN(str); - rb_str_resize(str, RSTRING_LEN(str) + len); - memcpy(RSTRING_PTR(str)+slen, fptr->cbuf+fptr->cbuf_off, len); + rb_str_cat(str, fptr->cbuf+fptr->cbuf_off, len); } fptr->cbuf_off += len; fptr->cbuf_len -= len;