"ZheNing Hu via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: ZheNing Hu <adlternative@xxxxxxxxx> > > This situation may occur in the original code: lstat() failed > but we use `&st` to feed ie_modified() later. > > It's buggy! Wasteful extra paragraph with almost no information contents over what has already been said in the first paragraph. > Therefore, we can directly execute show_ce without the judgment of > ie_modified() when lstat() has failed. But it introduces another bug, as you do not even see why a path cannot be lstat'ed, no? > > Signed-off-by: ZheNing Hu <adlternative@xxxxxxxxx> > --- > builtin/ls-files.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/builtin/ls-files.c b/builtin/ls-files.c > index c8eae899b82..6f97a23c2dc 100644 > --- a/builtin/ls-files.c > +++ b/builtin/ls-files.c > @@ -347,9 +347,12 @@ static void show_files(struct repository *repo, struct dir_struct *dir) > if (ce_skip_worktree(ce)) > continue; > err = lstat(fullname.buf, &st); > - if (show_deleted && err) > - show_ce(repo, dir, ce, fullname.buf, tag_removed); > - if (show_modified && ie_modified(repo->index, ce, &st, 0)) > + if (err) { > + if (show_deleted) > + show_ce(repo, dir, ce, fullname.buf, tag_removed); > + if (show_modified) > + show_ce(repo, dir, ce, fullname.buf, tag_modified); > + }else if (show_modified && ie_modified(repo->index, ce, &st, 0)) > show_ce(repo, dir, ce, fullname.buf, tag_modified); > } > }