From: Eric Blake Date: Wed, 12 Mar 2008 02:05:49 +0000 (-0600) Subject: Fix yesterday's regression in m4_wrap([$1]). X-Git-Tag: v2.62~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c108e5e9d4eeff6faebc3107dfd11e3b238227e;p=thirdparty%2Fautoconf.git Fix yesterday's regression in m4_wrap([$1]). * lib/m4sugar/m4sugar.m4 (_m4_wrap): Don't directly invoke wrapped text, since it may contain text that looks like parameters. * tests/m4sh.at (AS@&t@_INIT cleanup): Enhance test. Signed-off-by: Eric Blake --- diff --git a/ChangeLog b/ChangeLog index c6cc1e75..2892f571 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-03-12 Eric Blake + + Fix yesterday's regression in m4_wrap([$1]). + * lib/m4sugar/m4sugar.m4 (_m4_wrap): Don't directly invoke wrapped + text, since it may contain text that looks like parameters. + * tests/m4sh.at (AS@&t@_INIT cleanup): Enhance test. + 2008-03-11 Eric Blake Improve error messages for common testsuite bugs. diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4 index 9fc72275..e755f98a 100644 --- a/lib/m4sugar/m4sugar.m4 +++ b/lib/m4sugar/m4sugar.m4 @@ -611,11 +611,12 @@ m4_define([m4_undefine], # ------------------- # Helper macro for m4_wrap and m4_wrap_lifo. Allows nested calls to # m4_wrap within wrapped text. +# Skip m4_defn and m4_popdef for speed. m4_define([_m4_wrap], [m4_ifdef([$0_text], [m4_define([$0_text], [$1]m4_builtin([defn], [$0_text])[$2])], - [m4_builtin([m4wrap], [$0_text(m4_builtin([popdef], - [$0_text]))])m4_define([$0_text], [$1$2])])]) + [m4_builtin([m4wrap], [m4_unquote(m4_builtin([defn], + [$0_text])m4_builtin([popdef], [$0_text]))])m4_define([$0_text], [$1$2])])]) # m4_wrap(TEXT) # ------------- diff --git a/tests/m4sh.at b/tests/m4sh.at index dc50942a..726a23e7 100644 --- a/tests/m4sh.at +++ b/tests/m4sh.at @@ -776,8 +776,10 @@ AS_INIT dnl Registered after AS_INIT's cleanups, thus goes to KILL diversion m4_wrap([echo cleanup 2 dnl However, nested wraps and diversions can still be used +dnl Also, test wrapping text that looks like parameter reference m4_wrap([echo cleanup 3 -m4_divert_text([M4SH-INIT], [echo prep 4 +m4_divert_text([M4SH-INIT], [m4_define([foo], [$1])dnl +echo prep foo([4]) ])])]) dnl Registered before AS_INIT's cleanups m4_wrap_lifo([echo cleanup 5