bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sys_error can lose errno


From: Andreas Schwab
Subject: sys_error can lose errno
Date: Fri, 16 Nov 2001 10:29:43 +0100

Configuration Information [Automatically generated, do not change]:
Machine: ia64
OS: linux
Compiler: gcc -I/usr/src/packages/BUILD/bash-2.05a
Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='ia64' 
-DCONF_OSTYPE='linux' -DCONF_MACHTYPE='ia64-suse-linux' -DCONF_VENDOR='suse' 
-DSHELL -DHAVE_CONFIG_H   -I.  -I. -I./include -I./lib -O2 -D_GNU_SOURCE -Wall 
-pipe -g
uname output: Linux sykes 2.4.7-SMP #1 SMP Fri Sep 7 12:53:37 GMT 2001 ia64 
unknown
Machine Type: ia64-suse-linux

Bash Version: 2.05a
Patch Level: 0
Release Status: release

Description:
        sys_error can lose errno.  fprintf might clobber it.

Fix:
--- error.c     2001/11/16 09:23:12     1.1
+++ error.c     2001/11/16 09:23:50
@@ -206,10 +206,12 @@
 sys_error (format, arg1, arg2, arg3, arg4, arg5)
      char *format;
 {
+  int saved_errno = errno;
+
   fprintf (stderr, "%s: ", get_name_for_error ());
 
   fprintf (stderr, format, arg1, arg2, arg3, arg4, arg5);
-  fprintf (stderr, ": %s\n", strerror (errno));
+  fprintf (stderr, ": %s\n", strerror (saved_errno));
 }
 
 #else /* We have VARARGS support, so use it. */
@@ -370,6 +372,7 @@
      va_dcl
 #endif
 {
+  int saved_errno = errno;
   va_list args;
 
   fprintf (stderr, "%s: ", get_name_for_error ());
@@ -381,7 +384,7 @@
 #endif
 
   vfprintf (stderr, format, args);
-  fprintf (stderr, ": %s\n", strerror (errno));
+  fprintf (stderr, ": %s\n", strerror (saved_errno));
 
   va_end (args);
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]