about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/generic/glob.c17
2 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 137f99abb2..9d54fb4fc0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2002-02-10  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/generic/glob.c (glob): Explicitly set gl_pathc to zero
+	after globfree() calls.
+
 	* elf/dl-deps.c (struct openaux_args): Add open_mode element.
 	(openaux): Pass open_mode as new last argument to _dl_map_object.
 	(_dl_map_object_deps): Add new argument open_mode.  Initialize
diff --git a/sysdeps/generic/glob.c b/sysdeps/generic/glob.c
index 20cf0a2f5b..af409c54b2 100644
--- a/sysdeps/generic/glob.c
+++ b/sysdeps/generic/glob.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000, 2001, 2002 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
@@ -419,7 +419,10 @@ glob (pattern, flags, errfunc, pglob)
 	  if (onealt == NULL)
 	    {
 	      if (!(flags & GLOB_APPEND))
-		globfree (pglob);
+		{
+		  globfree (pglob);
+		  pglob->gl_pathc = 0;
+		}
 	      return GLOB_NOSPACE;
 	    }
 #endif
@@ -501,7 +504,10 @@ glob (pattern, flags, errfunc, pglob)
 		  free (onealt);
 #endif
 		  if (!(flags & GLOB_APPEND))
-		    globfree (pglob);
+		    {
+		      globfree (pglob);
+		      pglob->gl_pathc = 0;
+		    }
 		  return result;
 		}
 
@@ -933,6 +939,7 @@ glob (pattern, flags, errfunc, pglob)
 	    {
 	      globfree (&dirs);
 	      globfree (pglob);
+	      pglob->gl_pathc = 0;
 	      return status;
 	    }
 
@@ -943,6 +950,7 @@ glob (pattern, flags, errfunc, pglob)
 	    {
 	      globfree (&dirs);
 	      globfree (pglob);
+	      pglob->gl_pathc = 0;
 	      return GLOB_NOSPACE;
 	    }
 	}
@@ -975,6 +983,7 @@ glob (pattern, flags, errfunc, pglob)
 		{
 		  globfree (&dirs);
 		  globfree (pglob);
+		  pglob->gl_pathc = 0;
 		  return GLOB_NOSPACE;
 		}
 
@@ -1009,6 +1018,7 @@ glob (pattern, flags, errfunc, pglob)
 			    pglob->gl_pathc - old_pathc))
 	    {
 	      globfree (pglob);
+	      pglob->gl_pathc = 0;
 	      return GLOB_NOSPACE;
 	    }
 	}
@@ -1035,6 +1045,7 @@ glob (pattern, flags, errfunc, pglob)
  	    if (new == NULL)
 	      {
 		globfree (pglob);
+		pglob->gl_pathc = 0;
 		return GLOB_NOSPACE;
 	      }
 	    strcpy (&new[len - 2], "/");