From 38f4f02370cd42e2e4f8cc46e51013581d0973d0 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 2 Apr 2004 00:59:17 +0000 Subject: [PATCH] 2004-04-01 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): Add locking/unlocking of file. --- newlib/ChangeLog | 9 +++++++-- newlib/libc/stdio/vfscanf.c | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 3a563bc25..7da08c5ec 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,9 +1,14 @@ -2003-03-30 Jeff Johnston +2004-04-01 Jeff Johnston + + * libc/stdio/vfscanf.c (__svfscanf_r): Add locking/unlocking + of file. + +2004-03-30 Jeff Johnston * libc/machine/h8300/Makefile.am: Reformat slightly. * libc/machine/h8300/Makefile.in: Regenerate. -2003-03-30 Thomas Pfaff +2004-03-30 Thomas Pfaff * libc/stdio/findfp.c (__fp_lock_all): Add call to __sfp_lock_acquire. diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c index eef38b9e8..de8e847c0 100644 --- a/newlib/libc/stdio/vfscanf.c +++ b/newlib/libc/stdio/vfscanf.c @@ -285,6 +285,8 @@ __svfscanf_r (rptr, fp, fmt0, ap) static _CONST short basefix[17] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; + _flockfile (fp); + nassigned = 0; nread = 0; for (;;) @@ -297,7 +299,7 @@ __svfscanf_r (rptr, fp, fmt0, ap) #endif fmt += nbytes; if (wc == 0) - return nassigned; + goto all_done; if (nbytes == 1 && isspace (wc)) { for (;;) @@ -499,6 +501,7 @@ __svfscanf_r (rptr, fp, fmt0, ap) * Disgusting backwards compatibility hacks. XXX */ case '\0': /* compat */ + _funlockfile (fp); return EOF; default: /* compat */ @@ -1130,8 +1133,11 @@ __svfscanf_r (rptr, fp, fmt0, ap) } } input_failure: + _funlockfile (fp); return nassigned ? nassigned : -1; match_failure: +all_done: + _funlockfile (fp); return nassigned; }