https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104964
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P1 |P3
--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
All right, so this one is likely an invalid code:
cat x.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct bad_struct {
struct
{
char s_str[1];
} i;
};
struct good_struct
{
char s_str[1];
};
ssize_t size = 30;
struct bad_struct *bad;
struct good_struct *good;
int main()
{
good = (struct good_struct *)malloc (sizeof(struct good_struct) + size);
char *str = good->s_str;
strcpy (str, "sparta");
bad = (struct bad_struct *)malloc (sizeof(struct bad_struct) + size);
char *str2 = bad->i.s_str;
strcpy (str2, "sparta");
return 0;
}
It shows the difference in between wrapped struct and not wrapped one.