[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- sys_error can lose errno,
Andreas Schwab <=