summaryrefslogtreecommitdiffstats
path: root/newlib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc')
-rw-r--r--newlib/libc/stdio/findfp.c3
-rw-r--r--newlib/libc/stdio/vfprintf.c6
2 files changed, 5 insertions, 4 deletions
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index efbb62561..aff231ed4 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -114,9 +114,6 @@ found:
fp->_ub._size = 0;
fp->_lb._base = NULL; /* no line buffer */
fp->_lb._size = 0;
-#ifndef __SINGLE_THREAD__
- memset (&fp->_lock, 0, sizeof(fp->_lock));
-#endif
return fp;
}
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index c13a7f70f..5fe443138 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -253,7 +253,7 @@ __sbprintf(fp, fmt, ap)
fake._bf._size = fake._w = sizeof(buf);
fake._lbfsize = 0; /* not actually used, but Just In Case */
#ifndef __SINGLE_THREAD__
- memset (&fake._lock, 0, sizeof(fake._lock));
+ __lock_init_recursive (*(_LOCK_RECURSIVE_T *)&fake._lock);
#endif
/* do the work, then copy any error status */
@@ -262,6 +262,10 @@ __sbprintf(fp, fmt, ap)
ret = EOF;
if (fake._flags & __SERR)
fp->_flags |= __SERR;
+
+#ifndef __SINGLE_THREAD__
+ __lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fake._lock);
+#endif
return (ret);
}