mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 15:10:29 +02:00
Fix stack growth direction check.
Backport of 236f901b0e
from `stable-2.0'.
Fixes <http://bugs.gnu.org/11845>.
Reported by Cyprien Nicolas <c.nicolas@gmail.com>.
* configure.in: Pull stack growth direction check from upstream
Autoconf. See
http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00035.html
for a discussion.
This commit is contained in:
parent
a3467025d9
commit
62bc1072c1
1 changed files with 9 additions and 12 deletions
21
configure.in
21
configure.in
|
@ -1244,23 +1244,20 @@ SCM_I_GSC_STACK_GROWS_UP=0
|
|||
AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[AC_INCLUDES_DEFAULT
|
||||
int
|
||||
find_stack_direction ()
|
||||
find_stack_direction (int *addr, int depth)
|
||||
{
|
||||
static char *addr = 0;
|
||||
auto char dummy;
|
||||
if (addr == 0)
|
||||
{
|
||||
addr = &dummy;
|
||||
return find_stack_direction ();
|
||||
}
|
||||
else
|
||||
return (&dummy > addr) ? 1 : -1;
|
||||
int dir, dummy = 0;
|
||||
if (! addr)
|
||||
addr = &dummy;
|
||||
*addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
|
||||
dir = depth ? find_stack_direction (addr, depth - 1) : 0;
|
||||
return dir + dummy;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
return find_stack_direction () < 0;
|
||||
return find_stack_direction (0, argc + !argv + 20) < 0;
|
||||
}])],
|
||||
[SCM_I_GSC_STACK_GROWS_UP=1],
|
||||
[],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue