[PATCH] newlib: libc: Fix bugs in the commit 3d94e07c49b5.
Takashi Yano
takashi.yano@nifty.ne.jp
Fri Nov 10 11:34:36 GMT 2023
The commit 3d94e07c49b5 has a few bugs which cause testsuite failure
in libstdc++. This is due to excess orientation check in __srefill_r()
and _ungetc_r(). This patch fixes them.
Fixes: 3d94e07c49b5 ("newlib: libc: Fix crash on fprintf to a wide-oriented stream.")
Reported-by: Christophe Lyon <christophe.lyon@linaro.org>
Reviewed-by:
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
---
newlib/libc/stdio/refill.c | 3 ---
newlib/libc/stdio/ungetc.c | 8 ++------
2 files changed, 2 insertions(+), 9 deletions(-)
diff --git a/newlib/libc/stdio/refill.c b/newlib/libc/stdio/refill.c
index c1ef7e120..cd71ed152 100644
--- a/newlib/libc/stdio/refill.c
+++ b/newlib/libc/stdio/refill.c
@@ -43,9 +43,6 @@ __srefill_r (struct _reent * ptr,
CHECK_INIT (ptr, fp);
- if (ORIENT (fp, -1) != -1)
- return EOF;
-
fp->_r = 0; /* largely a convenience for callers */
/* SysV does not make this test; take it out for compatibility */
diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c
index 79914af08..5053fd6c4 100644
--- a/newlib/libc/stdio/ungetc.c
+++ b/newlib/libc/stdio/ungetc.c
@@ -125,12 +125,6 @@ _ungetc_r (struct _reent *rptr,
_newlib_flockfile_start (fp);
- if (ORIENT (fp, -1) != -1)
- {
- _newlib_flockfile_exit (fp);
- return EOF;
- }
-
/* After ungetc, we won't be at eof anymore */
fp->_flags &= ~__SEOF;
@@ -213,6 +207,8 @@ int
ungetc (int c,
register FILE *fp)
{
+ if (ORIENT (fp, -1) != -1)
+ return EOF;
return _ungetc_r (_REENT, c, fp);
}
#endif /* !_REENT_ONLY */
--
2.39.0
More information about the Newlib
mailing list