Index: class.c ================================================================== --- class.c +++ class.c @@ -1051,19 +1051,20 @@ if(!macstack) ParseError("Empty macro stack\n"); n=tokenv-1; nxttok(); if(n<0 || macstack->n<=n || !macstack->args[n]) ParseError("Cannot edit nonexistent argument %u\n",n+1); if(macstack->args[n]->t&(TF_MACRO|TF_EOF)) ParseError("Invalid edit token\n"); + free(macstack->args[n]->str); macstack->args[n]->t=tokent; macstack->args[n]->v=tokenv; macstack->args[n]->str=0; if(*tokenstr) { macstack->args[n]->str=strdup(tokenstr); if(!macstack->args[n]->str) fatal("Allocation failed\n"); } } else { - if(!(tokent&TF_NAME) || tokenv!=OP_STRING) ParseError("String literal expected\n"); + if(!(tokent&TF_NAME) || tokenv!=OP_STRING) ParseError("Numeric or string literal expected\n"); n=glohash[look_hash_mac()].id; if(n<0xC000 || n>MAX_MACRO+0xC000-1 || !macros[n-0xC000]) ParseError("Undefined macro: {%s}\n",tokenstr); nxttok(); n-=0xC000; if(macros[n]->t&(TF_MACRO|TF_EOF)) ParseError("Invalid edit token\n");