summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-28 16:31:12 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-28 16:31:12 +0000
commit06646d1b4ebf73e54b444bee43df76f3ff490f31 (patch)
treefd9bdf090f862a83a1a1a6988704ed8035dd7135 /io.c
parent44b9ca66968f7d683d0356c8cec123100c27345a (diff)
* io.c (rb_io_check_writable): restrict io_seek by
READ_DATA_PENDING because io_seek(fptr, 0, SEEK_CUR) is meaningful only if read buffer is not empty. call io_seek regardless of NEED_IO_SEEK_BETWEEN_RW. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/io.c b/io.c
index 9c4ef1b987..8bc6d9b74d 100644
--- a/io.c
+++ b/io.c
@@ -261,11 +261,10 @@ rb_io_check_writable(fptr)
if (!(fptr->mode & FMODE_WRITABLE)) {
rb_raise(rb_eIOError, "not opened for writing");
}
-#if NEED_IO_SEEK_BETWEEN_RW
- if ((fptr->mode & FMODE_RBUF) && !feof(fptr->f) && !fptr->f2) {
+ if ((fptr->mode & FMODE_RBUF) && !feof(fptr->f) && !fptr->f2 &&
+ READ_DATA_PENDING(fptr->f)) {
io_seek(fptr, 0, SEEK_CUR);
}
-#endif
if (!fptr->f2) {
fptr->mode &= ~FMODE_RBUF;
}