https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99716
Bug ID: 99716
Summary: -Wanalyzer-double-fclose when fclose is called inside
a loop
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: analyzer
Assignee: dmalcolm at gcc dot gnu.org
Reporter: rjones at redhat dot com
Target Milestone: ---
This seems pretty bogus to me:
#include <stdio.h>
#include <stdlib.h>
int
main ()
{
int i;
for (i = 0; i < 2; ++i) {
FILE *fp = fopen ("/tmp/test", "w");
fprintf (fp, "hello");
fclose (fp);
}
exit (EXIT_SUCCESS);
}
$ gcc -O2 -fanalyzer /tmp/fclose-loop.c -o /tmp/fclose-loop
/tmp/fclose-loop.c: In function ‘main’:
/tmp/fclose-loop.c:12:5: warning: double ‘fclose’ of FILE ‘fp’
[-Wanalyzer-double-fclose]
12 | fclose (fp);
| ^~~~~~~~~~~
‘main’: events 1-7
|
| 9 | for (i = 0; i < 2; ++i) {
| | ~~^~~
| | |
| | (1) following ‘true’ branch (when ‘i != 2’)...
| | (5) following ‘true’ branch (when ‘i != 2’)...
| 10 | FILE *fp = fopen ("/tmp/test", "w");
| | ~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (2) ...to here
| | (3) opened here
| | (6) ...to here
| 11 | fprintf (fp, "hello");
| 12 | fclose (fp);
| | ~~~~~~~~~~~
| | |
| | (4) first ‘fclose’ here
| | (7) second ‘fclose’ here; first ‘fclose’ was at (4)
This is with:
gcc-11.0.0-0.19.fc35.x86_64
I do not have any later version of GCC to test, but also I don't see any
other bug about this.