diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-10 16:52:09 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-10 16:52:09 +0000 |
commit | fe4581bf4be9a5791e54dbefd58e038bffb00b9c (patch) | |
tree | 14b80101105d3fc42f7b0e1dd674e9fff6af519d /io.c | |
parent | 766f57229cb947d9f5de3e29eeb1491b82766dbd (diff) |
* configure.in (RUBY_CHECK_IO_NEED): added more tests.
* io.c (rb_io_check_readable): seek after synchronized write.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@3327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -176,6 +176,8 @@ flush_before_seek(fptr) # define SEEK_END 2 #endif +#define FMODE_SYNCWRITE (FMODE_SYNC|FMODE_WRITABLE) + void rb_io_check_readable(fptr) OpenFile *fptr; @@ -184,7 +186,9 @@ rb_io_check_readable(fptr) rb_raise(rb_eIOError, "not opened for reading"); } #if NEED_IO_SEEK_BETWEEN_RW - if ((fptr->mode & FMODE_WBUF) && !fptr->f2) { + if (((fptr->mode & FMODE_WBUF) || + (fptr->mode & (FMODE_SYNCWRITE|FMODE_RBUF)) == FMODE_SYNCWRITE) && + !fptr->f2) { io_seek(fptr, 0, SEEK_CUR); fptr->mode &= ~FMODE_WBUF; } |