From 6ccbfe6a3d8a2aedb2c6f80bcc03bf946acc1b6c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 17 Nov 2023 17:00:54 +0100 Subject: __sfvwrite_r: call __sputc_r rather than putc in __SCLE case __sfvwrite_r is called under lock. There's no reason to call putc, locking the file recursively. Add a comment that locking is required when calling __sfvwrite_r. Fixes: 49d64538cd20 ("* libc/include/stdio.h (FILE): define __SCLE for "convert line endings" for Cygwin.") Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fvwrite.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'newlib/libc') diff --git a/newlib/libc/stdio/fvwrite.c b/newlib/libc/stdio/fvwrite.c index 34361cb..fc79951 100644 --- a/newlib/libc/stdio/fvwrite.c +++ b/newlib/libc/stdio/fvwrite.c @@ -40,6 +40,9 @@ /* * Write some memory regions. Return zero on success, EOF on error. * + * On systems supporting threads, this function *must* be called under + * _newlib_flockfile_start locking. + * * This routine is large and unsightly, but most of the ugliness due * to the three different kinds of output buffering is handled here. */ @@ -74,7 +77,7 @@ __sfvwrite_r (struct _reent *ptr, GETIOV (;); while (len > 0) { - if (putc (*p, fp) == EOF) + if (__sputc_r (ptr, *p, fp) == EOF) return EOF; p++; len--; -- cgit v1.1