1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
|
if(!macros) ParseError("Cannot edit nonexistent macro\n");
nxttok();
if(tokent==TF_INT) {
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");
|
|
>
>
>
>
>
|
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
|
if(!macros) ParseError("Cannot edit nonexistent macro\n");
nxttok();
if(tokent==TF_INT) {
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_OPEN) {
free_macro(macstack->args[n]->next);
macstack->args[n]->next=0;
} else if(macstack->args[n]->t&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");
|