aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2023-11-20 20:47:52 +0100
committerCorinna Vinschen <corinna@vinschen.de>2023-11-20 20:59:13 +0100
commitc190063f9658153988d735a333a7a3c7aeadc001 (patch)
tree2c6e5b794485d4677c93971d6808e6294e13713a /newlib/libc
parent09119463a1445be498f8a6ce3834d462361c7dd3 (diff)
downloadnewlib-c190063f9658153988d735a333a7a3c7aeadc001.zip
newlib-c190063f9658153988d735a333a7a3c7aeadc001.tar.gz
newlib-c190063f9658153988d735a333a7a3c7aeadc001.tar.bz2
stdio: set and test stream orientation in low-level input function __srget_r
This allows to set and test orientation correctly if input is only using macros from stdio.h. Wide-char-oriented functions must call __srefill_r directly. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'newlib/libc')
-rw-r--r--newlib/libc/stdio/rget.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/newlib/libc/stdio/rget.c b/newlib/libc/stdio/rget.c
index a9a0d2f..38e8b5d 100644
--- a/newlib/libc/stdio/rget.c
+++ b/newlib/libc/stdio/rget.c
@@ -39,6 +39,11 @@ __srget_r (struct _reent *ptr,
we call __srefill_r so we may access the true read buffer. */
CHECK_INIT(ptr, fp);
+ /* Have to set and check orientation here, otherwise the macros in
+ stdio.h never set it. */
+ if (ORIENT (fp, -1) != -1)
+ return EOF;
+
if (__srefill_r (ptr, fp) == 0)
{
fp->_r--;