aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/generic/glob.c9
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f0205c6fe..772d78523c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+1999-02-21 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * sysdeps/generic/glob.c (glob): Save previous errno.
+
1999-02-21 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/glob.c (glob): Enlarge buffers for reentrant
diff --git a/sysdeps/generic/glob.c b/sysdeps/generic/glob.c
index 977ce1509d..d624655718 100644
--- a/sysdeps/generic/glob.c
+++ b/sysdeps/generic/glob.c
@@ -642,6 +642,7 @@ glob (pattern, flags, errfunc, pglob)
size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX);
char *pwtmpbuf;
struct passwd pwbuf;
+ int save = errno;
if (pwbuflen == -1)
/* `sysconf' does not support _SC_GETPW_R_SIZE_MAX.
@@ -659,7 +660,7 @@ glob (pattern, flags, errfunc, pglob)
}
pwbuflen *= 2;
pwtmpbuf = (char *) __alloca (pwbuflen);
- __set_errno (0);
+ __set_errno (save);
}
# else
p = getpwnam (name);
@@ -726,6 +727,7 @@ glob (pattern, flags, errfunc, pglob)
size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
char *pwtmpbuf;
struct passwd pwbuf;
+ int save = errno;
if (buflen == -1)
/* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a
@@ -740,8 +742,9 @@ glob (pattern, flags, errfunc, pglob)
p = NULL;
break;
}
- pwtmpbuf = __alloca (buflen *= 2);
- __set_errno (0);
+ buflen *= 2;
+ pwtmpbuf = __alloca (buflen);
+ __set_errno (save);
}
# else
p = getpwnam (user_name);