analyzer: add regression test for leak false +ve [PR103526]

gcc/testsuite/ChangeLog:
	PR analyzer/103526
	* gcc.dg/analyzer/pr103526.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
This commit is contained in:
David Malcolm 2021-12-02 11:48:04 -05:00
parent cd47cd4b5e
commit 38a0ee2649
1 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,50 @@
#include <stdlib.h>
#include <string.h>
struct game_state {
const char *word;
char *word_state;
};
const char *const teststr = "test string";
static struct game_state *
game_new(void)
{
struct game_state tmp = {0};
struct game_state *rval = NULL;
size_t wordlen;
tmp.word = teststr;
wordlen = strlen(tmp.word);
if ((tmp.word_state = malloc(wordlen+1)) == NULL)
goto err;
if ((rval = malloc(sizeof(*rval))) == NULL)
goto err;
memcpy(rval, &tmp, sizeof(*rval));
return (rval);
err:
free(tmp.word_state);
free(rval);
return (NULL);
} /* { dg-bogus "leak" } */
static void
game_free(struct game_state *game)
{
if (game == NULL)
return;
free(game->word_state);
free(game);
}
int
main(void)
{
struct game_state *game;
if ((game = game_new()) == NULL)
exit(1);
game_free(game);
exit(0);
}