* Eric Blake wrote on Thu, Aug 26, 2010 at 01:18:21AM CEST:
> --- a/lib/m4sugar/m4sh.m4
> +++ b/lib/m4sugar/m4sh.m4

> @@ -1981,10 +1987,12 @@ m4_define([AS_VAR_GET],
>  # Polymorphic, and avoids sh expansion error upon interrupt or term signal.
>  m4_define([AS_VAR_IF],
>  [AS_LITERAL_WORD_IF([$1],
> -  [AS_IF([test "x$$1" = x""$2]],
> +  [AS_IF(m4_ifval([$2], [[test "x$$1" = x$2]], [[${$1:+false} :]])],
>    [AS_VAR_COPY([as_val], [$1])
> -   AS_IF([test "x$as_val" = x""$2]],
> -  [AS_IF([eval test \"x\$"$1"\" = x"_AS_ESCAPE([$2], [`], [\"$])"]]),
> +   AS_IF(m4_ifval([$2], [[test "x$as_val" = x$2]], [[${as_val:+false} :]])],
> +  [AS_IF(m4_ifval([$2],
> +    [[eval test \"x\$"$1"\" = x"_AS_ESCAPE([$2], [`], [\"$])"]],
> +    [[eval \${$1:+false} :]])]),
>  [$3], [$4])])

This looks like it's also changing the number of times the macro
arguments are evaluated.  I wonder if there is user code relying
on that ...

Cheers,
Ralf

Reply via email to