diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-01-10 18:38:19 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-01-10 18:38:19 +0000 |
commit | 0f841e93f1b471aa0d18920dc8d397131ebfed84 (patch) | |
tree | dd8d4cf9022b4934303b10f30deec97b8e1165de /io/fts.c | |
parent | e013caa79feae4327e6097b2d57519033c49e967 (diff) | |
download | glibc-0f841e93f1b471aa0d18920dc8d397131ebfed84.tar.gz glibc-0f841e93f1b471aa0d18920dc8d397131ebfed84.tar.xz glibc-0f841e93f1b471aa0d18920dc8d397131ebfed84.zip |
Make sure fts_cur is always valid after return from fts_read.
Diffstat (limited to 'io/fts.c')
-rw-r--r-- | io/fts.c | 9 |
1 files changed, 6 insertions, 3 deletions
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; } /* |