*** empty log message ***
[gnulib.git] / lib / savedir.c
index f720866..e969407 100644 (file)
@@ -1,5 +1,5 @@
 /* savedir.c -- save the list of files in a directory in a string
-   Copyright (C) 1990, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1990, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -76,7 +76,7 @@ char *stpcpy ();
    Return NULL if DIR cannot be opened or if out of memory. */
 
 char *
-savedir (const char *dir, unsigned int name_size)
+savedir (const char *dir, off_t name_size)
 {
   DIR *dirp;
   struct dirent *dp;
@@ -87,6 +87,11 @@ savedir (const char *dir, unsigned int name_size)
   if (dirp == NULL)
     return NULL;
 
+  /* Be sure name_size is at least `1' so there's room for
+     the final NUL byte.  */
+  if (name_size <= 0)
+    name_size = 1;
+
   name_space = (char *) malloc (name_size);
   if (name_space == NULL)
     {
@@ -102,7 +107,7 @@ savedir (const char *dir, unsigned int name_size)
          || (dp->d_name[1] != '\0'
              && (dp->d_name[1] != '.' || dp->d_name[2] != '\0')))
        {
-         unsigned size_needed = (namep - name_space) + NAMLEN (dp) + 2;
+         off_t size_needed = (namep - name_space) + NAMLEN (dp) + 2;
 
          if (size_needed > name_size)
            {