https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114791
--- Comment #5 from Urs Janßen <urs at akk dot org> --- -Wanalyzer-fd-leak has the same issue, no warning given for: #define _DEFAULT_SOURCE 1 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> int main(void); int main(void) { int fd = -1; int i = 0; static const char *list[] = { "/tmp/", "/tmp/a", "/tmp/b", NULL }; struct stat st; while (list[i] != NULL) { if ((fd = open(list[i++], O_RDONLY)) != -1) { if (fstat(fd, &st) != -1) { if ((st.st_mode & (S_IFREG | S_IFLNK)) && st.st_size > 0L) break; } #ifdef NO_FILE_LEAK close(fd); fd = -1; #endif /* NO_FILE_LEAK */ } } if (fd != -1) close(fd); }