Make sure fts_cur is always valid after return from fts_read.

This commit is contained in:
Ulrich Drepper 2007-01-10 18:38:19 +00:00
parent e013caa79f
commit 0f841e93f1
1 changed files with 6 additions and 3 deletions

View File

@ -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;
}
/*