> return (macrodef = FALSE);
but we shouldn't change macrodef here.
? mg
? mg_segfault.diff
? v2_mg_segfault.diff
Index: macro.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/macro.c,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 macro.c
--- macro.c 19 Mar 2015 21:22:15 -0000 1.16
+++ macro.c 4 Apr 2015 16:09:38 -0000
@@ -34,11 +34,11 @@ definemacro(int f, int n)
if (macrodef) {
ewprintf("already defining macro");
- return (macrodef = FALSE);
+ return (FALSE);
}
/* free lines allocated for string arguments */
- if (maclhead != NULL) {
+ if (macrodef && maclhead != NULL) {
for (lp1 = maclhead->l_fp; lp1 != maclhead; lp1 = lp2) {
lp2 = lp1->l_fp;
free(lp1);