diff --git a/tcc.c b/tcc.c index 3195802..b5860c3 100644 --- a/tcc.c +++ b/tcc.c @@ -175,7 +175,7 @@ typedef struct Section { struct Section *reloc; /* corresponding section for relocation, if any */ struct Section *hash; /* hash table for symbols */ struct Section *next; - char name[64]; /* section name */ + char name[1]; /* section name */ } Section; typedef struct DLLReference { @@ -964,8 +964,8 @@ Section *new_section(TCCState *s1, const char *name, int sh_type, int sh_flags) { Section *sec; - sec = tcc_mallocz(sizeof(Section)); - pstrcpy(sec->name, sizeof(sec->name), name); + sec = tcc_mallocz(sizeof(Section) + strlen(name)); + strcpy(sec->name, name); sec->sh_type = sh_type; sec->sh_flags = sh_flags; switch(sh_type) {