diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-09-16 16:01:55 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-09-16 16:01:55 +0000 |
commit | a6bb47e073377fa203132a3ae20f76103a8049b7 (patch) | |
tree | 6f133200943f818cad1e94da16393eadfe8dd250 /libio/ioseekoff.c | |
parent | db3b49b1fef1f3ba83eeb6537963bd7884e89602 (diff) | |
download | gcc-a6bb47e073377fa203132a3ae20f76103a8049b7.tar.gz |
Uli's libio/libstdc++ patches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15486 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libio/ioseekoff.c')
-rw-r--r-- | libio/ioseekoff.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libio/ioseekoff.c b/libio/ioseekoff.c index 8c642165f63..b1c4729b3d1 100644 --- a/libio/ioseekoff.c +++ b/libio/ioseekoff.c @@ -32,9 +32,14 @@ _IO_seekoff (fp, offset, dir, mode) int dir; int mode; { + _IO_pos_t retval; + /* If we have a backup buffer, get rid of it, since the __seekoff callback may not know to do the right thing about it. This may be over-kill, but it'll do for now. TODO */ + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); + _IO_flockfile (fp); + if (_IO_have_backup (fp)) { @@ -42,6 +47,8 @@ _IO_seekoff (fp, offset, dir, mode) offset -= fp->_IO_read_end - fp->_IO_read_ptr; _IO_free_backup_area (fp); } + retval = _IO_SEEKOFF (fp, offset, dir, mode); - return _IO_SEEKOFF (fp, offset, dir, mode); + _IO_cleanup_region_end (1); + return retval; } |