https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99042
Bug ID: 99042 Summary: file-leak is wrong Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: analyzer Assignee: dmalcolm at gcc dot gnu.org Reporter: antonio.chirizzi at gmail dot com Target Milestone: --- Created attachment 50155 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50155&action=edit Reproducer log.c file for the bug A file leak warning is shown, but it should not. See attached log.c reproducer. Please note that I tried to strip the file to a minimum (while trying to leave all the big complex data structures), but it still shows many warnings due to undeclared functions (it's part of the git code base) The leak warning is anyway consistent with what is shown on the real log.c file in the code base. In function ‘open_next_file’: log.c:495:16: warning: leak of FILE ‘<unknown>’ [CWE-775] [-Wanalyzer-file-leak] 495 | return 0; | ^ ‘open_next_file’: events 1-3 | | 491 | if ((rev->diffopt.file = fopen(filename.buf, "w")) == NULL) | | ^ | | | | | (1) following ‘false’ branch... |...... | 494 | strbuf_release(&filename); | | ~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) ...to here | 495 | return 0; | | ~ | | | | | (3) ‘<unknown>’ leaks here | Use "gcc -fanalyzer -c log.c"