changeset 27190:5e84c745830a

Fix a bug in yesterday's change. * lib/fts.c (fts_open): When using FTS_XDEV|FTS_NOSTAT, p->fts_statp->st_dev would be used uninitialized. Ensures that we always call fts_stat on the very first entry. Miklos Szeredi reported that find -xdev stopped working.
author Jim Meyering <jim@meyering.net>
date Sat, 14 Oct 2006 06:32:48 +0000
parents 20f01b3c2844
children 320f7c3aec57
files ChangeLog lib/fts.c
diffstat 2 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Oct 13 12:44:53 2006 +0000
+++ b/ChangeLog	Sat Oct 14 06:32:48 2006 +0000
@@ -1,3 +1,11 @@
+2006-10-13  Jim Meyering  <jim@meyering.net>
+
+	Fix a bug in yesterday's change.
+	* lib/fts.c (fts_open): When using FTS_XDEV|FTS_NOSTAT,
+	p->fts_statp->st_dev would be used uninitialized.
+	Ensures that we always call fts_stat on the very first entry.
+	Miklos Szeredi reported that find -xdev stopped working.
+
 2006-10-12  Bruno Haible  <bruno@clisp.org>
 
 	* gnulib-tool (func_get_automake_snippet): Append an automatically
--- a/lib/fts.c	Fri Oct 13 12:44:53 2006 +0000
+++ b/lib/fts.c	Sat Oct 14 06:32:48 2006 +0000
@@ -396,7 +396,10 @@
 		p->fts_level = FTS_ROOTLEVEL;
 		p->fts_parent = parent;
 		p->fts_accpath = p->fts_name;
-		if (defer_stat) {
+		/* Even when defer_stat is true, be sure to stat the first
+		   command line argument, since fts_read (at least with
+		   FTS_XDEV) requires that.  */
+		if (defer_stat && root != NULL) {
 			p->fts_info = FTS_NSOK;
 			fts_set_stat_required(p, true);
 		} else {