Mercurial > hg > octave-nkf > gnulib-hg
changeset 3466:45d73183ee54
Revert some of the previous change; intead,
fix the HAVE_GETCWD_NULL code to behave more like the
!HAVE_GETCWD_NULL code used to.
Include "xalloc.h".
(xgetcwd): Do not return NULL when memory is exhausted; instead,
invoke xalloc_die.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Tue, 04 Sep 2001 20:28:31 +0000 |
parents | e80738a5b62b |
children | 887161405bbf |
files | lib/xgetcwd.c |
diffstat | 1 files changed, 9 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/xgetcwd.c +++ b/lib/xgetcwd.c @@ -45,6 +45,8 @@ # define getcwd(Buf, Max) getwd (Buf) #endif +#include "xalloc.h" + /* Return the current directory, newly allocated, arbitrarily long. Return NULL and set errno on error. */ @@ -52,7 +54,10 @@ xgetcwd () { #if HAVE_GETCWD_NULL - return getcwd (NULL, 0); + char *cwd = getcwd (NULL, 0); + if (! cwd && errno == ENOMEM) + xalloc_die (); + return cwd; #else /* The initial buffer size for the working directory. A power of 2 @@ -65,12 +70,9 @@ while (1) { - char *cwd; + char *buf = xmalloc (buf_size); + char *cwd = getcwd (buf, buf_size); int saved_errno; - char *buf = malloc (buf_size); - if (! buf) - return NULL; - cwd = getcwd (buf, buf_size); if (cwd) return cwd; saved_errno = errno; @@ -79,10 +81,7 @@ return NULL; buf_size *= 2; if (buf_size == 0) - { - errno = ENOMEM; - return NULL; - } + xalloc_die (); } #endif }