mg(1) segfault.
it is triggered as follows:
1- echo "(start-kbd-macro)" >> $HOME/.mg
2- open mg and type twice C-x (
find below the backtrace and a patch to fix.
OK?
Program received signal SIGBUS, Bus error.
definemacro (f=Variable "f" is not available.
) at macro.c:43
43 lp2 = lp1->l_fp;
(gdb) backtrace
#0 definemacro (f=Variable "f" is not available.
) at macro.c:43
#1 0x0000038cecf15606 in doin () at kbd.c:158
#2 0x0000038cecf16d4b in main (argc=Variable "argc" is not available.
) at main.c:188
(gdb)
? mg
? mg_segfault.diff
Index: macro.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/macro.c,v
retrieving revision 1.16
diff -u -p -r1.16 macro.c
--- macro.c 19 Mar 2015 21:22:15 -0000 1.16
+++ macro.c 4 Apr 2015 13:45:15 -0000
@@ -38,7 +38,7 @@ definemacro(int f, int n)
}
/* 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);