From b334e6660a405d2d63166ad9e4560421e6810cdc Mon Sep 17 00:00:00 2001
From: Jeff Johnston <jjohnstn@redhat.com>
Date: Mon, 29 Apr 2013 21:06:23 +0000
Subject: 2013-04-29  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libc/stdio/local.h (CHECK_INIT): Evaluate argument only once.
	(CHECK_STD_INIT): Likewise.
	* libc/stdio/fgetc.c (fgetc): Use local variable for _REENT.
	* libc/stdio/fgetwc.c (fwgetc): Likewise.
	* libc/stdio/fgetws.c (fgetws): Likewise.
	* libc/stdio/fputc.c (fputc): Likewise.
	* libc/stdio/fputwc.c (fputwc): Likewise.
	* libc/stdio/fputws.c (fputws): Likewise.
	* libc/stdio/getc.c (getc): Likewise.
	* libc/stdio/getchar.c (_getchar_r): Likewise.
	* libc/stdio/putc.c (putc): Likewise.
	* libc/stdio/putchar.c (putchar): Likewise.
	* libc/stdio/scanf.c (scanf): Likewise.
	* libc/stdio/setvbuf.c (setvbuf): Likewise.
	* libc/stdio/ungetwc.c (ungetwc): Likewise.
	* libc/stdio/vfscanf.c (VFSCANF): Likewise.
	* libc/stdio/vfwscanf.c (VFWSCANF): Likewise.
	* libc/stdio/viprintf.c (viprintf): Likewise.
	* libc/stdio/viscanf.c (viscanf): Likewise.
	* libc/stdio/vprintf.c (vprintf): Likewise.
	* libc/stdio/vscanf.c (vscanf): Likewise.
	* libc/stdio/vwprintf.c (vwprintf): Likewise.
	* libc/stdio/vwscanf.c (vwscanf): Likewise.
	* libc/stdio/wscanf.c (wscanf): Likewise.
	* libc/stdlib/ecvtbuf.c (fcvtbuf): Likewise.
	(fcvtbuf): Likewise.
	(ecvtbuf): Likewise.
	(ecvtbuf): Likewise.
	* libc/stdlib/mblen.c (mblen): Likewise.
	* libc/stdlib/mbrlen.c (mbrlen): Likewise.
	* libc/stdlib/mbrtowc.c (mbrtowc): Likewise.
	* libc/stdlib/mbtowc.c (mbtowc): Likewise.
	* libc/stdlib/rand.c (srand): Likewise.
	(rand): Likewise.
	* libc/stdlib/wcrtomb.c (wcrtomb): Likewise.
	* libc/stdlib/wctob.c (wctob): Likewise.
	* libc/stdlib/wctomb.c (wctomb): Likewise.
	* libc/string/strtok.c (strtok): Likewise.
	* libc/time/asctime.c (asctime): Likewise.
	* libc/time/gmtime.c (gmtime): Likewise.
	* libc/time/lcltime.c (lcltime): Likewise.
---
 newlib/libc/stdlib/ecvtbuf.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

(limited to 'newlib/libc/stdlib/ecvtbuf.c')

diff --git a/newlib/libc/stdlib/ecvtbuf.c b/newlib/libc/stdlib/ecvtbuf.c
index 2b9b9eb..feaa33f 100644
--- a/newlib/libc/stdlib/ecvtbuf.c
+++ b/newlib/libc/stdlib/ecvtbuf.c
@@ -233,6 +233,7 @@ _DEFUN (fcvtbuf, (invalue, ndigit, decpt, sign, fcvt_buf),
 	int *sign _AND
 	char *fcvt_buf)
 {
+  struct _reent *reent = _REENT;
   char *save;
   char *p;
   char *end;
@@ -240,27 +241,27 @@ _DEFUN (fcvtbuf, (invalue, ndigit, decpt, sign, fcvt_buf),
 
   if (fcvt_buf == NULL)
     {
-      if (_REENT->_cvtlen <= ndigit + 35)
+      if (reent->_cvtlen <= ndigit + 35)
 	{
-	  if ((fcvt_buf = (char *) _realloc_r (_REENT, _REENT->_cvtbuf,
+	  if ((fcvt_buf = (char *) _realloc_r (reent, reent->_cvtbuf,
 					       ndigit + 36)) == NULL)
 	    return NULL;
-	  _REENT->_cvtlen = ndigit + 36;
-	  _REENT->_cvtbuf = fcvt_buf;
+	  reent->_cvtlen = ndigit + 36;
+	  reent->_cvtbuf = fcvt_buf;
 	}
 
-      fcvt_buf = _REENT->_cvtbuf ;
+      fcvt_buf = reent->_cvtbuf ;
     }
 
   save = fcvt_buf;
 
   if (invalue < 1.0 && invalue > -1.0)
     {
-      p = _dtoa_r (_REENT, invalue, 2, ndigit, decpt, sign, &end);
+      p = _dtoa_r (reent, invalue, 2, ndigit, decpt, sign, &end);
     }
   else
     {
-      p = _dtoa_r (_REENT, invalue, 3, ndigit, decpt, sign, &end);
+      p = _dtoa_r (reent, invalue, 3, ndigit, decpt, sign, &end);
     }
 
   /* Now copy */
@@ -289,6 +290,7 @@ _DEFUN (ecvtbuf, (invalue, ndigit, decpt, sign, fcvt_buf),
 	int *sign _AND
 	char *fcvt_buf)
 {
+  struct _reent *reent = _REENT;
   char *save;
   char *p;
   char *end;
@@ -296,21 +298,21 @@ _DEFUN (ecvtbuf, (invalue, ndigit, decpt, sign, fcvt_buf),
 
   if (fcvt_buf == NULL)
     {
-      if (_REENT->_cvtlen <= ndigit)
+      if (reent->_cvtlen <= ndigit)
 	{
-	  if ((fcvt_buf = (char *) _realloc_r (_REENT, _REENT->_cvtbuf,
+	  if ((fcvt_buf = (char *) _realloc_r (reent, reent->_cvtbuf,
 					       ndigit + 1)) == NULL)
 	    return NULL;
-	  _REENT->_cvtlen = ndigit + 1;
-	  _REENT->_cvtbuf = fcvt_buf;
+	  reent->_cvtlen = ndigit + 1;
+	  reent->_cvtbuf = fcvt_buf;
 	}
 
-      fcvt_buf = _REENT->_cvtbuf ;
+      fcvt_buf = reent->_cvtbuf ;
     }
 
   save = fcvt_buf;
 
-  p = _dtoa_r (_REENT, invalue, 2, ndigit, decpt, sign, &end);
+  p = _dtoa_r (reent, invalue, 2, ndigit, decpt, sign, &end);
 
   /* Now copy */
 
-- 
cgit v1.1