diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 736f50a11..63d899723 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -544,24 +544,26 @@ AC_DEFUN(ECL_STACK_DIRECTION,[ AC_MSG_CHECKING(whether stack growns downwards) if test -z "${ECL_STACK_DIR}" ; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ + +#include #include -char *f2() { +ptrdiff_t f2(const char *d) { char c[2]; - return c; + return c-d; } -char *f1() { +ptrdiff_t f1(const char *d) { char c[2]; - return c+1; + return c+1-d; } -typedef char *(*f_ptr)(); +typedef ptrdiff_t (*f_ptr)(const char *); f_ptr f[2] = { f1, f2 }; -int signo() { +ptrdiff_t signo() { char d[1]; - return f[rand() & 1]() - d; + return f[rand() & 1](d); } int main() { diff --git a/src/configure b/src/configure index 574840c43..ac9665791 100755 --- a/src/configure +++ b/src/configure @@ -7983,24 +7983,26 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + +#include #include -char *f2() { +ptrdiff_t f2(const char *d) { char c[2]; - return c; + return c-d; } -char *f1() { +ptrdiff_t f1(const char *d) { char c[2]; - return c+1; + return c+1-d; } -typedef char *(*f_ptr)(); +typedef ptrdiff_t (*f_ptr)(const char *); f_ptr f[2] = { f1, f2 }; -int signo() { +ptrdiff_t signo() { char d[1]; - return f[rand() & 1]() - d; + return f[rand() & 1](d); } int main() {