From 39a57ad07b0521dd6dbcae9cd4996366aa59e1ba Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 15 Sep 2012 01:45:27 -0700 Subject: [PATCH] Port _setjmp fix to POSIXish hosts as well as Microsoft. * nt/config.nt: Attempt to sync with autogen/config.in. (HAVE_SIGSETJMP, HAVE__SETJMP): New macros. (_longjmp, _setjmp): Remove. * src/image.c (_setjmp) [!HAVE__SETJMP]: Restore definition, as it's needed on POSIXish hosts that lack _setjmp. Attempt to solve the Microsoft problem in a different way, by altering nt/config.nt. --- nt/ChangeLog | 7 +++++++ nt/config.nt | 15 +++++++-------- src/ChangeLog | 7 +++++++ src/image.c | 4 +--- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/nt/ChangeLog b/nt/ChangeLog index 54e5570072a..197ce0cf850 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,10 @@ +2012-09-15 Paul Eggert + + Port _setjmp fix to POSIXish hosts as well as Microsoft. + * config.nt: Attempt to sync with autogen/config.in. + (HAVE_SIGSETJMP, HAVE__SETJMP): New macros. + (_longjmp, _setjmp): Remove. + 2012-09-14 Juanma Barranquero * config.nt: Sync with autogen/config.in. diff --git a/nt/config.nt b/nt/config.nt index 5121a013aad..82b7da430ab 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -800,6 +800,10 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if 'wint_t' is a signed integer type. */ #undef HAVE_SIGNED_WINT_T +/* Define to 1 if sigsetjmp and siglongjmp work. The value of this symbol is + irrelevant if HAVE__SETJMP is defined. */ +#undef HAVE_SIGSETJMP + /* Define to 1 if the system has the type `sigset_t'. */ #undef HAVE_SIGSET_T @@ -1084,6 +1088,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the `_ftime' function. */ #undef HAVE__FTIME +/* Define to 1 if _setjmp and _longjmp work. */ +#define HAVE__SETJMP 1 + /* Define to 1 if you have the `__builtin_unwind_init' function. */ #undef HAVE___BUILTIN_UNWIND_INIT @@ -1511,14 +1518,6 @@ along with GNU Emacs. If not, see . */ declarations. Define as empty for no equivalent. */ #undef __restrict_arr -/* Define to longjmp if _setjmp and _longjmp do not work. Because longjmp may - alter signal masks, callers of _longjmp should not assume that it leaves - signal masks alone. */ -#undef _longjmp - -/* Define to setjmp if _setjmp and _longjmp do not work. See _longjmp. */ -#undef _setjmp - /* Some platforms that do not use configure define this to include extra configuration information. */ #define config_opsysfile diff --git a/src/ChangeLog b/src/ChangeLog index f9d31b08abd..c6c314b9589 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-09-15 Paul Eggert + + Port _setjmp fix to POSIXish hosts as well as Microsoft. + * image.c (_setjmp) [!HAVE__SETJMP]: Restore definition, as + it's needed on POSIXish hosts that lack _setjmp. Attempt to solve + the Microsoft problem in a different way, by altering ../nt/config.nt. + 2012-09-15 Eli Zaretskii * w32xfns.c: diff --git a/src/image.c b/src/image.c index 02151c500cc..8fc1c8637eb 100644 --- a/src/image.c +++ b/src/image.c @@ -5520,9 +5520,7 @@ init_png_functions (Lisp_Object libraries) MinGW (MS-Windows) uses _setjmp and defines setjmp to _setjmp in the system header setjmp.h; don't mess up that. */ #ifndef HAVE__SETJMP -# ifndef setjmp -# define _setjmp(j) setjmp (j) -# endif +# define _setjmp(j) setjmp (j) # define _longjmp longjmp #endif -- 2.39.2