summaryrefslogtreecommitdiff
path: root/libio/ioseekoff.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@cygnus.com>1997-09-16 10:01:55 -0600
committerJeff Law <law@gcc.gnu.org>1997-09-16 10:01:55 -0600
commite693cc28bbfeb1c1728bec4392505d2eba2b1090 (patch)
tree6f133200943f818cad1e94da16393eadfe8dd250 /libio/ioseekoff.c
parent610ce97e654a9f2ed5e103bddd936988c5768538 (diff)
downloadgcc-e693cc28bbfeb1c1728bec4392505d2eba2b1090.tar.gz
Uli's libio/libstdc++ patches.
From-SVN: r15486
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;
}