aboutsummaryrefslogtreecommitdiff
path: root/contrib/libio/isscan.cc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libio/isscan.cc')
-rw-r--r--contrib/libio/isscan.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/contrib/libio/isscan.cc b/contrib/libio/isscan.cc
index 64d4bc682f82..977559c2cba5 100644
--- a/contrib/libio/isscan.cc
+++ b/contrib/libio/isscan.cc
@@ -29,10 +29,14 @@ the executable file might be covered by the GNU General Public License. */
istream& istream::scan(const char *format ...)
{
if (ipfx0()) {
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+ _strbuf);
va_list ap;
va_start(ap, format);
_strbuf->vscan(format, ap, this);
va_end(ap);
+ isfx();
+ _IO_cleanup_region_end (0);
}
return *this;
}
@@ -40,6 +44,12 @@ istream& istream::scan(const char *format ...)
istream& istream::vscan(const char *format, _IO_va_list args)
{
if (ipfx0())
+ {
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+ _strbuf);
_strbuf->vscan(format, args, this);
+ isfx();
+ _IO_cleanup_region_end (0);
+ }
return *this;
}