diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/analyzer/loop-3.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/loop-3.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/analyzer/loop-3.c b/gcc/testsuite/gcc.dg/analyzer/loop-3.c new file mode 100644 index 0000000..1d01771 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/loop-3.c @@ -0,0 +1,17 @@ +#include <stdlib.h> + +void test(int c) +{ + int i; + char *buffer = (char*)malloc(256); + + for (i=0; i<255; i++) { + buffer[i] = c; /* { dg-warning "use after 'free' of 'buffer'" } */ + /* BUG: the malloc could have failed + TODO: the checker doesn't yet pick up on this, perhaps + due to the pointer arithmetic not picking up on the + state */ + free(buffer); /* { dg-warning "double-'free' of 'buffer'" } */ + } + +} |