diff options
Diffstat (limited to 'nss')
-rw-r--r-- | nss/getXXbyYY.c | 13 | ||||
-rw-r--r-- | nss/getXXbyYY_r.c | 17 |
2 files changed, 13 insertions, 17 deletions
diff --git a/nss/getXXbyYY.c b/nss/getXXbyYY.c index ece2a0d..07e1d8a 100644 --- a/nss/getXXbyYY.c +++ b/nss/getXXbyYY.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -106,7 +106,7 @@ FUNCTION_NAME (ADD_PARAMS) if (buffer == NULL) { buffer_size = BUFLEN; - buffer = malloc (buffer_size); + buffer = (char *) malloc (buffer_size); } #ifdef HANDLE_DIGITS_DOTS @@ -132,14 +132,13 @@ FUNCTION_NAME (ADD_PARAMS) { char *new_buf; buffer_size += BUFLEN; - new_buf = realloc (buffer, buffer_size); + new_buf = (char *) realloc (buffer, buffer_size); if (new_buf == NULL) { /* We are out of memory. Free the current buffer so that the process gets a chance for a normal termination. */ - save = errno; free (buffer); - __set_errno (save); + __set_errno (ENOMEM); } buffer = new_buf; } @@ -150,10 +149,8 @@ FUNCTION_NAME (ADD_PARAMS) #ifdef HANDLE_DIGITS_DOTS done: #endif - /* Release lock. Preserve error value. */ - save = errno; + /* Release lock. */ __libc_lock_unlock (lock); - __set_errno (save); #ifdef NEED_H_ERRNO if (h_errno_tmp != 0) diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index a0e0e00..9963959 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -248,23 +248,22 @@ done: POSTPROCESS; #endif - int result; + int res; if (status == NSS_STATUS_SUCCESS) - result = 0; + res = 0; /* Don't pass back ERANGE if this is not for a too-small buffer. */ else if (errno == ERANGE && status != NSS_STATUS_TRYAGAIN) - { + res = EINVAL; #ifdef NEED_H_ERRNO - /* These functions only set errno if h_errno is NETDB_INTERNAL. */ - if (*h_errnop != NETDB_INTERNAL) + /* These functions only set errno if h_errno is NETDB_INTERNAL. */ + else if (status == NSS_STATUS_TRYAGAIN && *h_errnop != NETDB_INTERNAL) + res = EAGAIN; #endif - result = ENOENT; - } else return errno; - __set_errno (result); - return result; + __set_errno (res); + return res; } |