aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-09-14 09:05:50 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-09-14 12:27:28 -0400
commit00adddd65689d995d8bdf306d0850c852ff0fd25 (patch)
tree5921bf76340a84babe81872b97c438c614122ba1
parent35e3f0829d8e9cdc7ea19917c9f3a7add3f14847 (diff)
downloadgcc-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.c34
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;
+}