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
 }