From a98bbee4c1388c33841d11b4bdc5d0a600a9deda Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 3 Dec 2006 10:23:10 +0000 Subject: [PATCH] * lib/fts.c (fts_load): Don't set sp->fts_dev here, since p->fts_statp may not yet be defined. (fts_read): Instead, set it in the caller, once p->fts_statp is sure to be defined, and corresponds to a top-level directory. --- ChangeLog | 7 +++++++ lib/fts.c | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7888f38ecd..8f030e1d3e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-12-03 Jim Meyering + + * lib/fts.c (fts_load): Don't set sp->fts_dev here, since + p->fts_statp may not yet be defined. + (fts_read): Instead, set it in the caller, once p->fts_statp is + sure to be defined, and corresponds to a top-level directory. + 2006-12-01 Jim Meyering * modules/savewd (Depends-on): Add fcntl_h to avoid self-test diff --git a/lib/fts.c b/lib/fts.c index 269792a983..fa4d7576fd 100644 --- a/lib/fts.c +++ b/lib/fts.c @@ -516,7 +516,6 @@ fts_load (FTS *sp, register FTSENT *p) p->fts_namelen = len; } p->fts_accpath = p->fts_path = sp->fts_path; - sp->fts_dev = p->fts_statp->st_dev; } int @@ -743,9 +742,15 @@ check_for_dir: abort (); } } + sp->fts_cur = p; if (p->fts_info == FTS_D) { + /* Now that P->fts_statp is guaranteed to be valid, + if this is a command-line directory, record its + device number, to be used for FTS_XDEV. */ + if (p->fts_level == FTS_ROOTLEVEL) + sp->fts_dev = p->fts_statp->st_dev; Dprintf ((" entering: %s\n", p->fts_path)); if (! enter_dir (sp, p)) { -- 2.30.2