aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/analyzer/file-meaning-1.c
blob: 66b72a72daff0a33961c7c517cc9824ae8b4fd3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* { dg-additional-options "-fanalyzer-verbose-state-changes" } */

typedef struct FILE   FILE;
FILE* fopen (const char*, const char*);
int   fclose (FILE*);

void test_1 (const char *path)
{
  FILE *f = fopen (path, "r"); /* { dg-message "meaning: \\{verb: 'acquire', noun: 'resource'\\}" } */
  if (!f)
    return;

  fclose (f); /* { dg-message "meaning: \\{verb: 'release', noun: 'resource'\\}" } */
  fclose (f); /* { dg-warning "double 'fclose' of FILE 'f'" "warning" } */ 
}