From 6069202867ab9016aaf66301468d5f4c64b3b028 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 15 Oct 2009 05:58:00 +0000 Subject: * io.c (io_reopen): unread current buffer before telling the position, for the case of reopening same file. [ruby-dev:39479] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'io.c') diff --git a/io.c b/io.c index 9b0aadfda8..ccec1601dc 100644 --- a/io.c +++ b/io.c @@ -5654,13 +5654,6 @@ io_reopen(VALUE io, VALUE nfile) rb_io_fmode_modestr(orig->mode)); } } - if (orig->mode & FMODE_READABLE) { - pos = io_tell(orig); - } - if (orig->mode & FMODE_WRITABLE) { - if (io_fflush(orig) < 0) - rb_sys_fail(0); - } if (fptr->mode & FMODE_WRITABLE) { if (io_fflush(fptr) < 0) rb_sys_fail(0); @@ -5668,6 +5661,13 @@ io_reopen(VALUE io, VALUE nfile) else { io_tell(fptr); } + if (orig->mode & FMODE_READABLE) { + pos = io_tell(orig); + } + if (orig->mode & FMODE_WRITABLE) { + if (io_fflush(orig) < 0) + rb_sys_fail(0); + } /* copy rb_io_t structure */ fptr->mode = orig->mode | (fptr->mode & FMODE_PREP); -- cgit v1.2.3