From 99a49c0add96bfb75a65ccebb922378f3975f7d9 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sun, 20 Sep 2020 17:09:15 -0400 Subject: bftw: Fix bftw_cached_stat() with BFS_STAT_TRYFOLLOW --- bftw.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'bftw.c') diff --git a/bftw.c b/bftw.c index af9b400..dc04ce0 100644 --- a/bftw.c +++ b/bftw.c @@ -889,8 +889,12 @@ const struct bfs_stat *bftw_stat(const struct BFTW *ftwbuf, enum bfs_stat_flags const struct bfs_stat *bftw_cached_stat(const struct BFTW *ftwbuf, enum bfs_stat_flags flags) { if (flags & BFS_STAT_NOFOLLOW) { return ftwbuf->lstat_cache.buf; - } else { + } else if (ftwbuf->stat_cache.buf) { return ftwbuf->stat_cache.buf; + } else if ((flags & BFS_STAT_TRYFOLLOW) && is_nonexistence_error(ftwbuf->stat_cache.error)) { + return ftwbuf->lstat_cache.buf; + } else { + return NULL; } } -- cgit v1.2.3