Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/analyzer/file-pr58237.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
#include <stdio.h> void f0(const char *str) { FILE * fp = fopen(str, "r"); /* { dg-message "opened here" } */ char buf[10]; fgets(buf, 10, fp); } /* { dg-warning "leak of FILE 'fp'" } */ void f1(const char *str) { FILE * fp = fopen(str, "r"); /* { dg-message "opened here" } */ char buf[10]; while (fgets(buf, 10, fp) != NULL) { /* Do something with buf */ } } /* { dg-warning "leak of FILE 'fp'" } */ void f2(const char *str, int flag) { FILE * fp = fopen(str, "r"); /* { dg-message "opened here" } */ char buf[10]; while (fgets(buf, 10, fp) != NULL) { /* Do something with buf */ } if (flag) /* { dg-message "when 'flag == 0'" } */ fclose(fp); } /* { dg-warning "leak of FILE 'fp'" } */ extern void called_by_f3( FILE * fp); void f3(const char *str) { FILE * fp = fopen(str, "r"); char buf[10]; while (fgets(buf, 10, fp) != NULL) { /* Do something with buf */ } /* Not sure if fclose executed by called_by_f3 or not. Say nothing */ called_by_f3(fp); } void f4(const char *str) { FILE * fp = fopen(str, "r"); char buf[10]; while (fgets(buf, 10, fp) != NULL) { /* Do something with buf */ } /* Nothing to say here. */ fclose(fp); } void main(int argc, const char * argv[]) { FILE * fp = fopen(argv[0], "r"); char buf[10]; while (fgets(buf, 10, fp) != NULL) { /* Do something with buf */ } /* Nothing to say here, because we are in main. */ }