summaryrefslogtreecommitdiff
path: root/libio/ioseekoff.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-09-16 16:01:55 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-09-16 16:01:55 +0000
commita6bb47e073377fa203132a3ae20f76103a8049b7 (patch)
tree6f133200943f818cad1e94da16393eadfe8dd250 /libio/ioseekoff.c
parentdb3b49b1fef1f3ba83eeb6537963bd7884e89602 (diff)
downloadgcc-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.c9
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;
}