Index: cmdtool/lexcmd.l =================================================================== RCS file: RCS/lexcmd.l,v retrieving revision 3.10 diff -u -r3.10 lexcmd.l --- lexcmd.l 1998/07/10 01:10:41 3.10 +++ lexcmd.l 1999/01/26 01:23:26 @@ -192,9 +192,7 @@ if necessary */ if (send_to_parser) { char *str = os->str(); - str[os->pcount()] = 0; /* This just makes sure the string is - null-terminated (I had some problems before that - went away when I did this). */ + (*os) << ends; delete os; /* cleanup that ostrstream */ readstring(str); delete str; @@ -211,10 +209,11 @@ goto bailout; } } + else + delete os; if (expr == NULL) { - /* we couldn't find the expression in the appropriate hash table */ - cerr << "couldn't find the given abbreviation." << endl; + cerr << "Expression is NULL" << endl; goto bailout; } @@ -347,8 +346,8 @@ {DIGIT}+ { ((YYSTYPE *)cmdlval)->num = atoi(yytext); return NUM; } {LETTER}{ID}* { ((YYSTYPE *)cmdlval)->sym = new Symbol(yytext); return SYM; } -\${DIGIT}+ { lookup_numbered_abv(yytext,FALSE); return finish_expr(FALSE); } -\${LETTER}{ID}* { expr = LookupLabeledExpr(Symbol(yytext)); return finish_expr(FALSE); } +\${DIGIT}+ { start_expr(); lookup_numbered_abv(yytext,FALSE); return finish_expr(FALSE); } +\${LETTER}{ID}* { start_expr(); expr = LookupLabeledExpr(Symbol(yytext)); return finish_expr(FALSE); } [\n] { BEGIN(0); } . { cerr << "Bad input char: " << yytext[0] << endl; } }