/* { dg-skip-if "requires hosted libstdc++ for stdlib malloc" { ! hostedlib } } */ #include /* Reduced from Juliet 1.3's CWE415_Double_Free__malloc_free_char_67a.c goodG2B which was showing a false leak report in a non-LTO build. */ struct s1 { char * structFirst; }; void external_fn_1(struct s1 myStruct); void test_1() { char * data; struct s1 myStruct; data = (char *)malloc(100*sizeof(char)); if (data == NULL) exit(-1); myStruct.structFirst = data; external_fn_1(myStruct); } /* { dg-bogus "leak of 'data'" } */ /* As above, but with padding before the field. */ struct s2 { void *padding; char *ptr; }; void external_fn_2(struct s2 myStruct); void test_2() { char * data; struct s2 myStruct; data = (char *)malloc(100*sizeof(char)); if (data == NULL) exit(-1); myStruct.padding = NULL; myStruct.ptr = data; external_fn_2(myStruct); } /* { dg-bogus "leak of 'data'" } */