OSDN Git Service

2005-02-08 Antony King <antony.king@st.com>
authorjjohnstn <jjohnstn>
Tue, 8 Feb 2005 19:38:46 +0000 (19:38 +0000)
committerjjohnstn <jjohnstn>
Tue, 8 Feb 2005 19:38:46 +0000 (19:38 +0000)
        * arm/syscalls.c: Change CHECK_INIT to pass reentrant struct
        instead of file pointer.

libgloss/ChangeLog
libgloss/arm/syscalls.c

index 4a7aed0..680fe79 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-08  Antony King  <antony.king@st.com>
+
+       * arm/syscalls.c: Change CHECK_INIT to pass reentrant struct
+       instead of file pointer.
+
 2005-02-01  Hans-Peter Nilsson  <hp@axis.com>
 
        * cris/Makefile.in (ALL_INSTALL_FILES): New macro.
index 42e69b7..e890228 100644 (file)
@@ -55,20 +55,17 @@ register char * stack_ptr asm ("sp");
 
 /* following is copied from libc/stdio/local.h to check std streams */
 extern void   _EXFUN(__sinit,(struct _reent *));
-#define CHECK_INIT(fp) \
-  do                                    \
-    {                                   \
-      if ((fp)->_data == 0)             \
-        (fp)->_data = _REENT;           \
-      if (!(fp)->_data->__sdidinit)     \
-        __sinit ((fp)->_data);          \
-    }                                   \
+#define CHECK_INIT(ptr) \
+  do                                           \
+    {                                          \
+      if ((ptr) && !(ptr)->__sdidinit)         \
+       __sinit (ptr);                          \
+    }                                          \
   while (0)
 
 /* Adjust our internal handles to stay away from std* handles.  */
 #define FILE_HANDLE_OFFSET (0x20)
 
-static int std_files_checked;
 static int monitor_stdin;
 static int monitor_stdout;
 static int monitor_stderr;
@@ -119,13 +116,8 @@ do_AngelSWI (int reason, void * arg)
 static int
 remap_handle (int fh)
 {
-  if (!std_files_checked)
-    {
-       CHECK_INIT(stdin);
-       CHECK_INIT(stdout);
-       CHECK_INIT(stderr);
-       std_files_checked = 1;
-    }
+  CHECK_INIT(_REENT);
+
   if (fh == STDIN_FILENO)
     return monitor_stdin;
   if (fh == STDOUT_FILENO)