# HG changeset patch # User Jim Meyering # Date 999635311 0 # Node ID 45d73183ee54093258cbef2637b6499dfeceb8dd # Parent e80738a5b62beadbe9359568d9d173023686d9f3 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. diff --git a/lib/xgetcwd.c b/lib/xgetcwd.c --- 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 }