From 0f841e93f1b471aa0d18920dc8d397131ebfed84 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 10 Jan 2007 18:38:19 +0000 Subject: Make sure fts_cur is always valid after return from fts_read. --- io/fts.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'io/fts.c') diff --git a/io/fts.c b/io/fts.c index 532743fb3e..8e628b481d 100644 --- a/io/fts.c +++ b/io/fts.c @@ -376,12 +376,14 @@ fts_read(sp) } p = sp->fts_child; sp->fts_child = NULL; + sp->fts_cur = p; goto name; } /* Move to the next node on this level. */ next: tmp = p; if ((p = p->fts_link) != NULL) { + sp->fts_cur = p; free(tmp); /* @@ -394,7 +396,7 @@ next: tmp = p; return (NULL); } fts_load(sp, p); - return (sp->fts_cur = p); + return p; } /* @@ -420,11 +422,12 @@ next: tmp = p; name: t = sp->fts_path + NAPPEND(p->fts_parent); *t++ = '/'; memmove(t, p->fts_name, p->fts_namelen + 1); - return (sp->fts_cur = p); + return p; } /* Move up to the parent node. */ p = tmp->fts_parent; + sp->fts_cur = p; free(tmp); if (p->fts_level == FTS_ROOTPARENTLEVEL) { @@ -465,7 +468,7 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); return (NULL); } p->fts_info = p->fts_errno ? FTS_ERR : FTS_DP; - return (sp->fts_cur = p); + return p; } /* -- cgit 1.4.1