From: Ulrich Drepper Date: Wed, 10 Jan 2007 18:38:19 +0000 (+0000) Subject: Make sure fts_cur is always valid after return from fts_read. X-Git-Tag: upstream/2.30~15223 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0f841e93f1b471aa0d18920dc8d397131ebfed84;p=external%2Fglibc.git Make sure fts_cur is always valid after return from fts_read. --- diff --git a/io/fts.c b/io/fts.c index 532743f..8e628b4 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; } /*