https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91205

--- Comment #2 from Ricardo Ribalda <ricardo at ribalda dot com> ---
Hi Jakub

I can agree that I do not like the code style and I have already send a patch
for that.

On the other hand is a bit frustrating that mangling a bit the struct, or using
memcpy is enough to make it work.:


#include <string.h>
#include <stdio.h>

struct  tftphdr {
        short   th_opcode;                      /* packet type */
        union {
                char    tu_padding[3];          /* sizeof() compat */

                char tu_data[0];        /* data or error string */

        } __attribute__ ((__packed__)) th_u1;
} __attribute__ ((__packed__));

static char buf[512];

int main(int argc, char* argv[])
{
        struct tftphdr *tp;

        tp = (struct tftphdr *) buf;
        strcpy(tp->th_u1.tu_data, "Hello world");

        fprintf(stdout, "Code works %s!\n", tp->th_u1.tu_data);

        return 0;
}

Reply via email to