summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-03-03 10:44:25 +0100
committerStefano Lattarini <stefano.lattarini@gmail.com>2012-03-03 10:44:25 +0100
commitcca288d94e1d1992dd157e43c5891213c87b46be (patch)
tree062617038918c189ecc92827094a748b07724392
parent46a40ee9c4fcc598e20d4d997915529ece58277d (diff)
downloadautoconf-cca288d94e1d1992dd157e43c5891213c87b46be.tar.gz
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.
-rw-r--r--lib/m4sugar/m4sh.m44
1 files changed, 4 insertions, 0 deletions
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).