diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-09-14 09:05:50 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-09-14 12:27:28 -0400 |
commit | 00adddd65689d995d8bdf306d0850c852ff0fd25 (patch) | |
tree | 5921bf76340a84babe81872b97c438c614122ba1 | |
parent | 35e3f0829d8e9cdc7ea19917c9f3a7add3f14847 (diff) | |
download | gcc-00adddd65689d995d8bdf306d0850c852ff0fd25.zip gcc-00adddd65689d995d8bdf306d0850c852ff0fd25.tar.gz gcc-00adddd65689d995d8bdf306d0850c852ff0fd25.tar.bz2 |
analyzer: add regression test for leak false positive
Downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1878600
describes a false positive from -Wanalyzer-file-leak seen with
gcc 10.2, but which has been fixed in gcc 11.
This patch adds the reproducer as a regression test.
gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/rhbz1878600.c: New test.
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c b/gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c new file mode 100644 index 0000000..9f6ccb6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c @@ -0,0 +1,34 @@ +#include <stdio.h> + +#define INI_MAX_LINE 200 + +typedef char* (*ini_reader)(char* str, int num, void* stream); + +int ini_parse(const char* filename); + +static int ini_parse_stream(ini_reader reader, void* stream) +{ + char line[INI_MAX_LINE]; + int max_line = INI_MAX_LINE; + while (reader(line, max_line, stream) != NULL) + ; + return 0; +} + +static int ini_parse_file(FILE* file) +{ + return ini_parse_stream((ini_reader)fgets, file); +} + +int ini_parse(const char* filename) +{ + FILE* file; + int error; + + file = fopen(filename, "r"); + if (!file) + return -1; + error = ini_parse_file(file); + fclose(file); + return error; +} |