From: Stefano Lattarini Date: Sat, 3 Mar 2012 09:44:25 +0000 (+0100) Subject: configure: don't infloop when re-executing with $CONFIG_SHELL X-Git-Tag: v2.69~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cca288d94e1d1992dd157e43c5891213c87b46be;p=thirdparty%2Fautoconf.git configure: don't infloop when re-executing with $CONFIG_SHELL It turns out our guard against infinite recursion wasn't good enough when shells without $LINENO support were involved, since the creation-and-sourcing of configure.lineno broke the guard's expectations. Reports by Tim Rice and Paul Eggert. * lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Export '_as_can_reexec' to "no" before sourcing the just-created configure.lineno. --- diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index be013aaa..f05346b7 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -1199,6 +1199,10 @@ dnl Eggert wrote the scripts with optimization help from Paolo Bonzini). chmod +x "$as_me.lineno"] || AS_ERROR([cannot create $as_me.lineno; rerun with a POSIX shell]) + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this).