guy%gorodish@Sun.COM (Guy Harris) (01/10/87)
Index: cmd/awk/awk.g.y Description: In a number of cases, "awk" will drop core when it encounters a syntax error. If "awk"s standard error is redirected to a file, it may not even print the error messages. Repeat-By: Run the following command: awk '{ ng[] = ; goop = 1; }' </dev/null and watch it drop core. Fix: *** /tmp/da7722 Fri Jan 9 21:09:43 1987 --- awk.g.y Fri Jan 9 21:00:22 1987 *************** *** 238,244 **** { $$ = stat3($1, $2, 0, 0); } | expr { $$ = exptostat($1); } | { $$ = (int)0; } ! | error { yyclearin; yyerror("illegal statement"); } ; statement: --- 238,244 ---- { $$ = stat3($1, $2, 0, 0); } | expr { $$ = exptostat($1); } | { $$ = (int)0; } ! | error { yyclearin; yyerror("illegal statement"); $$ = (int)0; } ; statement: For those of you with S5R1 and its older version of "awk", the change is the same; only some of the surrounding code differs. *** /arch/4.3/usr/src/bin/awk/awk.g.y Sun Feb 27 14:24:47 1983 --- ./awk.g.y Fri Jan 9 21:01:29 1987 *************** *** 235,241 **** { PUTS("printf list"); $$ = stat3($1, $2, nullstat, nullstat); } | expr { PUTS("expr"); $$ = exptostat($1); } | { PUTS("null simple statement"); $$ = (hack)nullstat; } ! | error { yyclearin; yyerror("illegal statement"); } ; statement: --- 235,241 ---- { PUTS("printf list"); $$ = stat3($1, $2, nullstat, nullstat); } | expr { PUTS("expr"); $$ = exptostat($1); } | { PUTS("null simple statement"); $$ = (hack)nullstat; } ! | error { yyclearin; yyerror("illegal statement"); $$ = (hack)nullstat; } ; statement: