Path: utzoo!attcan!uunet!mcvax!unido!sbsvax!bs From: bs@sbsvax.UUCP (Bernard Sieloff) Newsgroups: comp.sources.bugs Subject: bug in PD m4 macro processor +fix Keywords: PD m4 macro processor; bugfix Message-ID: <530@sbsvax.UUCP> Date: 7 Jul 88 18:07:03 GMT Organization: Universitaet des Saarlandes, Saarbruecken, West Germany Lines: 52 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