bs@sbsvax.UUCP (Bernard Sieloff) (07/08/88)
I'm posting this for W.Ruelling's Research Group in our house.
They detected and fixed the following bug in the PD M4 macro processor
(originally posted to comp.sources.unix Vol.13 Issue 38/39 12.Feb.88).
Description:
There is a bug in PD-m4's management of parameters of macros.
The separating comma will only be recognized in macro declarations
of the *first level*.
Repeat-by:
construction of 2nd level macros, e.g.
changequote(@,%)
dnl -----------------------
define(@a%,$1+$2=$3)dnl()
define(@b%,$3=$1+$2)dnl()
define(@c%,$1($2,$3,$4))
dnl -----------------------
c(@a%,@alpha%,@beta%,@gamma%)
c(@b%,@alpha%,@beta%,@gamma%)
You will get as m4's output:
alphabetagamma+=
=alphabetagamma+
instead of the (correct) output:
alpha+beta=gamma
gamma=alpha+beta
Fix: (modification of main.c)
cd to your PD-m4 source directory. Feed this posting to
Larry Wall's patch program.
Index: main.c
*** main.c.old Thu Jun 30 19:38:00 1988
--- main.c Wed Jul 6 15:58:12 1988
***************
*** 374,377 ****
--- 374,378 ----
pushs(ep);
}
+ else {chrsave(',');}
break;
default:
--
Bernard Sieloff | UUCP: ...!uunet!unido!sbsvax!bs
Universitaet des Saarlandes | or bs@sbsvax.UUCP
FB 10 - Informatik (Dept. of CS) | CSNET: bs%sbsvax.uucp@Germany.CSnet
Bau 36, Im Stadtwald 15 | ARPA: bs%sbsvax.uucp@uunet.UU.NET
D-6600 Saarbruecken 11, W. Germany | Phone: +49 681 302 2434