[PATCH] Restore _lock initialization in single threaded mode
Torbjörn SVENSSON
torbjorn.svensson@foss.st.com
Mon Aug 29 18:18:51 GMT 2022
When __SINGLE_THREAD__ is defined, stdin, stdout and stderr needs to
have their _lock instance initialized. The __sfp() method is not
invoked for the 3 mentioned fds thus, the std() method needs to handle
the initialization of the lock.
This is more or less a revert of 382550072b49430f8c69adee937a0ba07bd385e6
Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
---
newlib/libc/stdio/findfp.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index c43028209..f7249f6d7 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -88,6 +88,10 @@ std (FILE *ptr,
#else /* _STDIO_CLOSE_STD_STREAMS */
ptr->_close = NULL;
#endif /* _STDIO_CLOSE_STD_STREAMS */
+#ifndef __SINGLE_THREAD__
+ if (ptr == &__sf[0] || ptr == &__sf[1] || ptr == &__sf[2])
+ __lock_init_recursive (&ptr->_lock);
+#endif
#ifdef __SCLE
if (__stextmode (ptr->_file))
ptr->_flags |= __SCLE;
--
2.25.1
More information about the Newlib
mailing list