Subject: bug#12446: port better to POSIX hosts lacking _setjmp

From: Paul Eggert <[email-masked]>
Date: Fri, 14 Sep 2012 12:44:37 -0700

Tags: patch

Here's a patch I plan to install after a bit more testing.  It affects
the use of setjmp / _setjmp and so the Windows port probably needs to
be updated (for the symbols HAVE__SETJMP and/or HAVE_SIGSETJMP).  I
don't think it breaks anything in Windows but have not looked at the
Windows port closely and I could be mistaken.  I'm CC'ing this to Eli
and Juanma as a heads-up.

=== modified file 'ChangeLog'
--- ChangeLog	2012-09-14 18:56:19 +0000
+++ ChangeLog	2012-09-14 19:35:57 +0000
@@ -1,5 +1,9 @@
 2012-09-14  Paul Eggert  <[email-masked]>
 
+	Port better to POSIX hosts lacking _setjmp.
+	* configure.ac (HAVE__SETJMP, HAVE_SIGSETJMP): New symbols.
+	(_setjmp, _longjmp): Remove.
+
 	* configure.ac: Port to hosts lacking gtk.
 	(PKG_CHECK_MODULES): Capture pkg-config diagnostics
 	better, in particular, problems in invoking pkg-config itself.

=== modified file 'configure.ac'
--- configure.ac	2012-09-14 18:56:19 +0000
+++ configure.ac	2012-09-14 19:35:57 +0000
@@ -3774,13 +3774,24 @@
 	   _longjmp (j, 1);]])],
      [emacs_cv_func__setjmp=yes],
      [emacs_cv_func__setjmp=no])])
-if test $emacs_cv_func__setjmp = no; then
-  AC_DEFINE([_setjmp], [setjmp],
-    [Define to setjmp if _setjmp and _longjmp do not work.  See _longjmp.])
-  AC_DEFINE([_longjmp], [longjmp],
-    [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.])
+if test $emacs_cv_func__setjmp = yes; then
+  AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
+else
+  AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+	 [[#include <setjmp.h>
+	 ]],
+	 [[sigjmp_buf j;
+	   if (! sigsetjmp (j, 1))
+	     siglongjmp (j, 1);]])],
+       [emacs_cv_func_sigsetjmp=yes],
+       [emacs_cv_func_sigsetjmp=no])])
+  if test $emacs_cv_func_sigsetjmp = yes; then
+    AC_DEFINE([HAVE_SIGSETJMP], 1,
+      [Define to 1 if sigsetjmp and siglongjmp work.
+       The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
+  fi
 fi
 
 case $opsys in

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2012-09-14 14:23:50 +0000
+++ src/ChangeLog	2012-09-14 19:35:57 +0000
@@ -1,3 +1,24 @@
+2012-09-14  Paul Eggert  <[email-masked]>
+
+	Port better to POSIX hosts lacking _setjmp.
+	* lisp.h: Include <setjmp.h> here, since we use its symbols here.
+	All instances of '#include <setjmp.h>' removed, if the
+	only reason for the instance was because "lisp.h" was included.
+	(sys_jmp_buf, sys_setjmp, sys_longjmp): New symbols.
+	Unless otherwise specified, replace all uses of jmp_buf, _setjmp,
+	and _longjmp with the new symbols.  This ports better to POSIX hosts
+	that have sigsetjmp but not _setjmp, such as some versions of
+	Solaris and Unixware.  (Also, POSIX-2008 marks _setjmp as obsolescent.)
+	* image.c (_setjmp, _longjmp) [HAVE_PNG && !HAVE__SETJMP]: New macros.
+	(png_load_body) [HAVE_PNG]:
+	(PNG_LONGJMP) [HAVE_PNG && PNG_LIBPNG_VER < 10500]:
+	(PNG_JMPBUF) [HAVE_PNG && PNG_LIBPNG_VER >= 10500]:
+	Use _setjmp and _longjmp rather than sys_setjmp and sys_longjmp,
+	since PNG requires jmp_buf.  This is the only exception to the
+	general rule that we now use sys_setjmp and sys_longjmp.
+	This exception is OK since this code does not change the signal
+	mask or longjmp out of a signal handler.
+
 2012-09-14  Dmitry Antipov  <[email-masked]>
 
 	Avoid out-of-range marker position (Bug#12426).

=== modified file 'src/alloc.c'
--- src/alloc.c	2012-09-13 05:18:26 +0000
+++ src/alloc.c	2012-09-14 19:35:57 +0000
@@ -24,7 +24,6 @@
 
 #include <stdio.h>
 #include <limits.h>		/* For CHAR_BIT.  */
-#include <setjmp.h>
 
 #ifdef ENABLE_CHECKING
 #include <signal.h>		/* For SIGABRT. */
@@ -45,7 +44,7 @@
 #include "frame.h"
 #include "blockinput.h"
 #include "termhooks.h"		/* For struct terminal.  */
-#include <setjmp.h>
+
 #include <verify.h>
 
 /* GC_CHECK_MARKED_OBJECTS means do sanity checks on allocated objects.
@@ -4762,14 +4761,14 @@
 {
   char buf[10];
   register int x;
-  jmp_buf jbuf;
+  sys_jmp_buf jbuf;
 
   /* Arrange for X to be put in a register.  */
   sprintf (buf, "1");
   x = strlen (buf);
   x = 2 * x - 1;
 
-  _setjmp (jbuf);
+  sys_setjmp (jbuf);
   if (longjmps_done == 1)
     {
       /* Came here after the longjmp at the end of the function.
@@ -4794,7 +4793,7 @@
   ++longjmps_done;
   x = 2;
   if (longjmps_done == 1)
-    _longjmp (jbuf, 1);
+    sys_longjmp (jbuf, 1);
 }
 
 #endif /* not GC_SAVE_REGISTERS_ON_STACK && not GC_SETJMP_WORKS */
@@ -4900,7 +4899,7 @@
   /* jmp_buf may not be aligned enough on darwin-ppc64 */
   union aligned_jmpbuf {
     Lisp_Object o;
-    jmp_buf j;
+    sys_jmp_buf j;
   } j;
   volatile bool stack_grows_down_p = (char *) &j > (char *) stack_base;
 #endif
@@ -4936,7 +4935,7 @@
     }
 #endif /* GC_SETJMP_WORKS */
 
-  _setjmp (j.j);
+  sys_setjmp (j.j);
   end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j;
 #endif /* not GC_SAVE_REGISTERS_ON_STACK */
 #endif /* not HAVE___BUILTIN_UNWIND_INIT */

=== modified file 'src/atimer.c'
--- src/atimer.c	2012-09-07 01:27:44 +0000
+++ src/atimer.c	2012-09-14 19:35:57 +0000
@@ -18,7 +18,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "syssignal.h"
 #include "systime.h"

=== modified file 'src/bidi.c'
--- src/bidi.c	2012-09-11 22:59:50 +0000
+++ src/bidi.c	2012-09-14 19:35:57 +0000
@@ -56,7 +56,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/buffer.c'
--- src/buffer.c	2012-09-11 04:22:03 +0000
+++ src/buffer.c	2012-09-14 19:35:57 +0000
@@ -26,7 +26,6 @@
 #include <sys/param.h>
 #include <errno.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <unistd.h>
 
 #include <verify.h>

=== modified file 'src/bytecode.c'
--- src/bytecode.c	2012-09-04 17:34:54 +0000
+++ src/bytecode.c	2012-09-14 19:35:57 +0000
@@ -33,7 +33,7 @@
  */
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/callint.c'
--- src/callint.c	2012-08-25 03:11:12 +0000
+++ src/callint.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@

 #include <config.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/callproc.c'
--- src/callproc.c	2012-09-07 01:27:44 +0000
+++ src/callproc.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 #include <config.h>
 #include <errno.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <sys/types.h>
 #include <unistd.h>

=== modified file 'src/casefiddle.c'
--- src/casefiddle.c	2012-08-25 06:25:00 +0000
+++ src/casefiddle.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/casetab.c'
--- src/casetab.c	2012-08-25 06:25:00 +0000
+++ src/casetab.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/category.c'
--- src/category.c	2012-08-25 06:25:00 +0000
+++ src/category.c	2012-09-14 19:35:57 +0000
@@ -32,7 +32,6 @@
 
 #define CATEGORY_INLINE EXTERN_INLINE
 
-#include <setjmp.h>
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/ccl.c'
--- src/ccl.c	2012-07-05 06:32:41 +0000
+++ src/ccl.c	2012-09-14 19:35:57 +0000
@@ -26,7 +26,6 @@
 #include <config.h>
 
 #include <stdio.h>
-#include <setjmp.h>
 #include <limits.h>
 
 #include "lisp.h"

=== modified file 'src/character.c'
--- src/character.c	2012-09-04 17:34:54 +0000
+++ src/character.c	2012-09-14 19:35:57 +0000
@@ -36,7 +36,6 @@
 #ifdef emacs
 
 #include <sys/types.h>
-#include <setjmp.h>
 #include <intprops.h>
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/charset.c'
--- src/charset.c	2012-09-04 17:34:54 +0000
+++ src/charset.c	2012-09-14 19:35:57 +0000
@@ -32,7 +32,6 @@
 #include <unistd.h>
 #include <limits.h>
 #include <sys/types.h>
-#include <setjmp.h>
 #include <c-ctype.h>
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/chartab.c'
--- src/chartab.c	2012-08-26 08:41:36 +0000
+++ src/chartab.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "charset.h"

=== modified file 'src/cm.c'
--- src/cm.c	2012-09-04 17:34:54 +0000
+++ src/cm.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "frame.h"

=== modified file 'src/cmds.c'
--- src/cmds.c	2012-08-27 16:19:34 +0000
+++ src/cmds.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "commands.h"
 #include "character.h"

=== modified file 'src/coding.c'
--- src/coding.c	2012-09-04 17:34:54 +0000
+++ src/coding.c	2012-09-14 19:35:57 +0000
@@ -285,7 +285,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/composite.c'
--- src/composite.c	2012-08-27 17:23:48 +0000
+++ src/composite.c	2012-09-14 19:35:57 +0000
@@ -26,7 +26,6 @@
 
 #define COMPOSITE_INLINE EXTERN_INLINE
 
-#include <setjmp.h>
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/data.c'
--- src/data.c	2012-09-12 19:16:36 +0000
+++ src/data.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include <intprops.h>

=== modified file 'src/dbusbind.c'
--- src/dbusbind.c	2012-08-27 17:23:48 +0000
+++ src/dbusbind.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,7 @@
 #ifdef HAVE_DBUS
 #include <stdio.h>
 #include <dbus/dbus.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "frame.h"
 #include "termhooks.h"

=== modified file 'src/dired.c'
--- src/dired.c	2012-09-04 17:34:54 +0000
+++ src/dired.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <setjmp.h>
 
 #ifdef HAVE_PWD_H
 #include <pwd.h>

=== modified file 'src/dispnew.c'
--- src/dispnew.c	2012-09-13 02:21:28 +0000
+++ src/dispnew.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 #define DISPEXTERN_INLINE EXTERN_INLINE
 
 #include <stdio.h>
-#include <setjmp.h>
 #include <unistd.h>
 
 #include "lisp.h"

=== modified file 'src/doc.c'
--- src/doc.c	2012-09-03 19:36:09 +0000
+++ src/doc.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 
 #include <sys/types.h>
 #include <sys/file.h>	/* Must be after sys/types.h for USG*/
-#include <setjmp.h>
 #include <fcntl.h>
 #include <unistd.h>

=== modified file 'src/doprnt.c'
--- src/doprnt.c	2012-09-09 16:06:33 +0000
+++ src/doprnt.c	2012-09-14 19:35:57 +0000
@@ -102,7 +102,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <float.h>
 #include <unistd.h>
 #include <limits.h>

=== modified file 'src/dosfns.c'
--- src/dosfns.c	2012-08-17 21:52:15 +0000
+++ src/dosfns.c	2012-09-14 19:35:57 +0000
@@ -30,7 +30,7 @@
 #include <dos.h>
 #undef gettime
 #undef settime
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/editfns.c'
--- src/editfns.c	2012-09-11 04:22:03 +0000
+++ src/editfns.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 #include <config.h>
 #include <sys/types.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #ifdef HAVE_PWD_H
 #include <pwd.h>

=== modified file 'src/emacs.c'
--- src/emacs.c	2012-09-13 02:21:28 +0000
+++ src/emacs.c	2012-09-14 19:35:57 +0000
@@ -25,7 +25,6 @@
 
 #include <sys/types.h>
 #include <sys/file.h>
-#include <setjmp.h>
 #include <unistd.h>
 
 #include "lisp.h"

=== modified file 'src/emacsgtkfixed.c'
--- src/emacsgtkfixed.c	2012-09-13 04:14:33 +0000
+++ src/emacsgtkfixed.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,7 @@
 
 #include "emacsgtkfixed.h"
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "frame.h"
 #include "xterm.h"

=== modified file 'src/eval.c'
--- src/eval.c	2012-09-12 21:34:24 +0000
+++ src/eval.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@
 
 #include <config.h>
 #include <limits.h>
-#include <setjmp.h>
 #include <stdio.h>
 #include "lisp.h"
 #include "blockinput.h"
@@ -1072,7 +1071,7 @@
   catchlist = &c;
 
   /* Call FUNC.  */
-  if (! _setjmp (c.jmp))
+  if (! sys_setjmp (c.jmp))
     c.val = (*func) (arg);
 
   /* Throw works by a longjmp that comes right here.  */
@@ -1140,7 +1139,7 @@
   backtrace_list = catch->backlist;
   lisp_eval_depth = catch->lisp_eval_depth;
 
-  _longjmp (catch->jmp, 1);
+  sys_longjmp (catch->jmp, 1);
 }
 
 DEFUN ("throw", Fthrow, Sthrow, 2, 2, 0,
@@ -1246,7 +1245,7 @@
   c.interrupt_input_blocked = interrupt_input_blocked;
   c.gcpro = gcprolist;
   c.byte_stack = byte_stack_list;
-  if (_setjmp (c.jmp))
+  if (sys_setjmp (c.jmp))
     {
       if (!NILP (h.var))
 	specbind (h.var, c.val);
@@ -1301,7 +1300,7 @@
   c.interrupt_input_blocked = interrupt_input_blocked;
   c.gcpro = gcprolist;
   c.byte_stack = byte_stack_list;
-  if (_setjmp (c.jmp))
+  if (sys_setjmp (c.jmp))
     {
       return (*hfun) (c.val);
     }
@@ -1339,7 +1338,7 @@
   c.interrupt_input_blocked = interrupt_input_blocked;
   c.gcpro = gcprolist;
   c.byte_stack = byte_stack_list;
-  if (_setjmp (c.jmp))
+  if (sys_setjmp (c.jmp))
     {
       return (*hfun) (c.val);
     }
@@ -1381,7 +1380,7 @@
   c.interrupt_input_blocked = interrupt_input_blocked;
   c.gcpro = gcprolist;
   c.byte_stack = byte_stack_list;
-  if (_setjmp (c.jmp))
+  if (sys_setjmp (c.jmp))
     {
       return (*hfun) (c.val);
     }
@@ -1425,7 +1424,7 @@
   c.interrupt_input_blocked = interrupt_input_blocked;
   c.gcpro = gcprolist;
   c.byte_stack = byte_stack_list;
-  if (_setjmp (c.jmp))
+  if (sys_setjmp (c.jmp))
     {
       return (*hfun) (c.val, nargs, args);
     }

=== modified file 'src/fileio.c'
--- src/fileio.c	2012-09-05 07:18:46 +0000
+++ src/fileio.c	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <setjmp.h>
 #include <unistd.h>
 
 #ifdef HAVE_PWD_H

=== modified file 'src/filelock.c'
--- src/filelock.c	2012-09-05 07:18:46 +0000
+++ src/filelock.c	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 #include <sys/stat.h>
 #include <signal.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #ifdef HAVE_PWD_H
 #include <pwd.h>

=== modified file 'src/floatfns.c'
--- src/floatfns.c	2012-09-11 02:28:27 +0000
+++ src/floatfns.c	2012-09-14 19:35:57 +0000
@@ -29,7 +29,7 @@
  */
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "syssignal.h"

=== modified file 'src/fns.c'
--- src/fns.c	2012-09-11 22:59:50 +0000
+++ src/fns.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <unistd.h>
 #include <time.h>
-#include <setjmp.h>
 
 #include <intprops.h>

=== modified file 'src/font.c'
--- src/font.c	2012-09-06 08:04:49 +0000
+++ src/font.c	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 #include <config.h>
 #include <float.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include <c-ctype.h>

=== modified file 'src/fontset.c'
--- src/fontset.c	2012-09-06 08:04:49 +0000
+++ src/fontset.c	2012-09-14 19:35:57 +0000
@@ -26,7 +26,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "blockinput.h"

=== modified file 'src/frame.c'
--- src/frame.c	2012-09-13 05:18:26 +0000
+++ src/frame.c	2012-09-14 19:35:57 +0000
@@ -24,7 +24,6 @@
 #include <stdio.h>
 #include <errno.h>
 #include <limits.h>
-#include <setjmp.h>
 
 #include <c-ctype.h>

=== modified file 'src/fringe.c'
--- src/fringe.c	2012-09-09 20:10:36 +0000
+++ src/fringe.c	2012-09-14 19:35:57 +0000
@@ -18,7 +18,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "frame.h"

=== modified file 'src/ftfont.c'
--- src/ftfont.c	2012-09-06 08:04:49 +0000
+++ src/ftfont.c	2012-09-14 19:35:57 +0000
@@ -21,8 +21,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
-
 #include <fontconfig/fontconfig.h>
 #include <fontconfig/fcfreetype.h>

=== modified file 'src/ftxfont.c'
--- src/ftxfont.c	2012-09-06 08:04:49 +0000
+++ src/ftxfont.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <X11/Xlib.h>
 
 #include "lisp.h"

=== modified file 'src/gnutls.c'
--- src/gnutls.c	2012-08-18 02:49:24 +0000
+++ src/gnutls.c	2012-09-14 19:35:57 +0000
@@ -18,7 +18,6 @@
 
 #include <config.h>
 #include <errno.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "process.h"

=== modified file 'src/gtkutil.c'
--- src/gtkutil.c	2012-09-07 01:27:44 +0000
+++ src/gtkutil.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 #ifdef USE_GTK
 #include <float.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include <c-ctype.h>

=== modified file 'src/image.c'
--- src/image.c	2012-09-13 01:22:08 +0000
+++ src/image.c	2012-09-14 19:35:57 +0000
@@ -5514,6 +5514,13 @@
 
 #endif /* HAVE_NTGUI */
 
+/* Possibly inefficient/inexact substitutes for _setjmp and _longjmp.
+   Do not use sys_setjmp, as PNG supports only jmp_buf.  The _longjmp
+   substitute may munge the signal mask, but that should be OK here.  */
+#ifndef HAVE__SETJMP
+# define _setjmp(j) setjmp (j)
+# define _longjmp longjmp
+#endif
 
 #if (PNG_LIBPNG_VER < 10500)
 #define PNG_LONGJMP(ptr) (_longjmp ((ptr)->jmpbuf, 1))
@@ -5593,7 +5600,7 @@
 
 struct png_load_context
 {
-  /* These are members so that _longjmp doesn't munge local variables.  */
+  /* These are members so that longjmp doesn't munge local variables.  */
   png_struct *png_ptr;
   png_info *info_ptr;
   png_info *end_info;
@@ -6129,9 +6136,9 @@
 struct my_jpeg_error_mgr
 {
   struct jpeg_error_mgr pub;
-  jmp_buf setjmp_buffer;
+  sys_jmp_buf setjmp_buffer;
 
-  /* The remaining members are so that _longjmp doesn't munge local
+  /* The remaining members are so that longjmp doesn't munge local
      variables.  */
   struct jpeg_decompress_struct cinfo;
   enum
@@ -6151,7 +6158,7 @@
 {
   struct my_jpeg_error_mgr *mgr = (struct my_jpeg_error_mgr *) cinfo->err;
   mgr->failure_code = MY_JPEG_ERROR_EXIT;
-  _longjmp (mgr->setjmp_buffer, 1);
+  sys_longjmp (mgr->setjmp_buffer, 1);
 }

@@ -6401,7 +6408,7 @@
      error is detected.  This function will perform a longjmp.  */
   mgr->cinfo.err = fn_jpeg_std_error (&mgr->pub);
   mgr->pub.error_exit = my_error_exit;
-  if (_setjmp (mgr->setjmp_buffer))
+  if (sys_setjmp (mgr->setjmp_buffer))
     {
       switch (mgr->failure_code)
 	{
@@ -6460,14 +6467,14 @@
   if (!check_image_size (f, width, height))
     {
       mgr->failure_code = MY_JPEG_INVALID_IMAGE_SIZE;
-      _longjmp (mgr->setjmp_buffer, 1);
+      sys_longjmp (mgr->setjmp_buffer, 1);
     }
 
   /* Create X image and pixmap.  */
   if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
     {
       mgr->failure_code = MY_JPEG_CANNOT_CREATE_X;
-      _longjmp (mgr->setjmp_buffer, 1);
+      sys_longjmp (mgr->setjmp_buffer, 1);
     }
 
   /* Allocate colors.  When color quantization is used,

=== modified file 'src/indent.c'
--- src/indent.c	2012-09-04 17:34:54 +0000
+++ src/indent.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/insdel.c'
--- src/insdel.c	2012-09-14 14:23:50 +0000
+++ src/insdel.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@

 #include <config.h>
-#include <setjmp.h>
 
 #include <intprops.h>

=== modified file 'src/intervals.c'
--- src/intervals.c	2012-09-04 17:34:54 +0000
+++ src/intervals.c	2012-09-14 19:35:57 +0000
@@ -41,7 +41,6 @@
 
 #define INTERVALS_INLINE EXTERN_INLINE
 
-#include <setjmp.h>
 #include <intprops.h>
 #include "lisp.h"
 #include "intervals.h"

=== modified file 'src/keyboard.c'
--- src/keyboard.c	2012-09-13 16:23:06 +0000
+++ src/keyboard.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,7 @@
 #define KEYBOARD_INLINE EXTERN_INLINE
 
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "termchar.h"
 #include "termopts.h"
@@ -145,7 +145,7 @@
 
 /* For longjmp to where kbd input is being done.  */
 
-static jmp_buf getcjmp;
+static sys_jmp_buf getcjmp;
 
 /* True while doing kbd input.  */
 int waiting_for_input;
@@ -434,8 +434,8 @@
                                         Lisp_Object *, ptrdiff_t);
 static Lisp_Object make_lispy_switch_frame (Lisp_Object);
 static int help_char_p (Lisp_Object);
-static void save_getcjmp (jmp_buf);
-static void restore_getcjmp (jmp_buf);
+static void save_getcjmp (sys_jmp_buf);
+static void restore_getcjmp (sys_jmp_buf);
 static Lisp_Object apply_modifiers (int, Lisp_Object);
 static void clear_event (struct input_event *);
 static Lisp_Object restore_kboard_configuration (Lisp_Object);
@@ -2315,8 +2315,8 @@
 {
   volatile Lisp_Object c;
   ptrdiff_t jmpcount;
-  jmp_buf local_getcjmp;
-  jmp_buf save_jump;
+  sys_jmp_buf local_getcjmp;
+  sys_jmp_buf save_jump;
   volatile int key_already_recorded = 0;
   Lisp_Object tem, save;
   volatile Lisp_Object previous_echo_area_message;
@@ -2562,7 +2562,7 @@
      it *must not* be in effect when we call redisplay.  */
 
   jmpcount = SPECPDL_INDEX ();
-  if (_setjmp (local_getcjmp))
+  if (sys_setjmp (local_getcjmp))
     {
       /* Handle quits while reading the keyboard.  */
       /* We must have saved the outer value of getcjmp here,
@@ -3394,13 +3394,13 @@
    See read_process_output.  */
 
 static void
-save_getcjmp (jmp_buf temp)
+save_getcjmp (sys_jmp_buf temp)
 {
   memcpy (temp, getcjmp, sizeof getcjmp);
 }
 
 static void
-restore_getcjmp (jmp_buf temp)
+restore_getcjmp (sys_jmp_buf temp)
 {
   memcpy (getcjmp, temp, sizeof getcjmp);
 }
@@ -10979,7 +10979,7 @@
     do_switch_frame (make_lispy_switch_frame (internal_last_event_frame),
 		     0, 0, Qnil);
 
-  _longjmp (getcjmp, 1);
+  sys_longjmp (getcjmp, 1);
 }
 
 DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,

=== modified file 'src/keymap.c'
--- src/keymap.c	2012-09-04 17:34:54 +0000
+++ src/keymap.c	2012-09-14 19:35:57 +0000
@@ -40,7 +40,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "commands.h"
 #include "character.h"

=== modified file 'src/lisp.h'
--- src/lisp.h	2012-09-11 23:50:28 +0000
+++ src/lisp.h	2012-09-14 19:35:57 +0000
@@ -20,6 +20,7 @@
 #ifndef EMACS_LISP_H
 #define EMACS_LISP_H
 
+#include <setjmp.h>
 #include <stdalign.h>
 #include <stdarg.h>
 #include <stdbool.h>
@@ -1963,7 +1964,24 @@
     static struct Lisp_Kboard_Objfwd ko_fwd;			\
     defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \
   } while (0)
+
+/* Save and restore the instruction and environment pointers,
+   without affecting the signal mask.  */
 
+#ifdef HAVE__SETJMP
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) _setjmp (j)
+# define sys_longjmp(j, v) _longjmp (j, v)
+#elif defined HAVE_SIGSETJMP
+typedef sigjmp_buf sys_jmp_buf;
+# define sys_setjmp(j) sigsetjmp (j, 0)
+# define sys_longjmp(j, v) siglongjmp (j, v)
+#else
+/* A non-POSIX platform; assume longjmp does not affect the sigmask.  */
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) setjmp (j)
+# define sys_longjmp(j, v) longjmp (j, v)
+#endif
 
 
 /* Structure for recording Lisp call stack for backtrace purposes.  */
@@ -2056,7 +2074,7 @@
   Lisp_Object volatile val;
   struct catchtag *volatile next;
   struct gcpro *gcpro;
-  jmp_buf jmp;
+  sys_jmp_buf jmp;
   struct backtrace *backlist;
   struct handler *handlerlist;
   EMACS_INT lisp_eval_depth;

=== modified file 'src/lread.c'
--- src/lread.c	2012-09-11 04:22:03 +0000
+++ src/lread.c	2012-09-14 19:35:57 +0000
@@ -25,7 +25,6 @@
 #include <sys/file.h>
 #include <errno.h>
 #include <limits.h>	/* For CHAR_BIT.  */
-#include <setjmp.h>
 #include <stat-time.h>
 #include "lisp.h"
 #include "intervals.h"

=== modified file 'src/macros.c'
--- src/macros.c	2012-08-17 23:38:43 +0000
+++ src/macros.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "macros.h"
 #include "commands.h"

=== modified file 'src/marker.c'
--- src/marker.c	2012-09-11 04:22:03 +0000
+++ src/marker.c	2012-09-14 19:35:57 +0000
@@ -18,7 +18,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/menu.c'
--- src/menu.c	2012-09-04 17:34:54 +0000
+++ src/menu.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <limits.h> /* for INT_MAX */
 
 #include "lisp.h"

=== modified file 'src/minibuf.c'
--- src/minibuf.c	2012-09-11 04:22:03 +0000
+++ src/minibuf.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 #include <config.h>
 #include <errno.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "commands.h"

=== modified file 'src/nsfns.m'
--- src/nsfns.m	2012-09-07 01:27:44 +0000
+++ src/nsfns.m	2012-09-14 19:35:57 +0000
@@ -31,7 +31,6 @@
 #include <config.h>
 
 #include <math.h>
-#include <setjmp.h>
 #include <c-strcase.h>
 
 #include "lisp.h"

=== modified file 'src/nsfont.m'
--- src/nsfont.m	2012-09-06 08:04:49 +0000
+++ src/nsfont.m	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 /* This should be the first include, as it may set up #defines affecting
    interpretation of even the system includes. */
 #include <config.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "dispextern.h"

=== modified file 'src/nsimage.m'
--- src/nsimage.m	2012-08-16 21:58:44 +0000
+++ src/nsimage.m	2012-09-14 19:35:57 +0000
@@ -28,7 +28,6 @@
 /* This should be the first include, as it may set up #defines affecting
    interpretation of even the system includes. */
 #include <config.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "dispextern.h"

=== modified file 'src/nsmenu.m'
--- src/nsmenu.m	2012-09-04 17:34:54 +0000
+++ src/nsmenu.m	2012-09-14 19:35:57 +0000
@@ -24,7 +24,6 @@
 /* This should be the first include, as it may set up #defines affecting
    interpretation of even the system includes. */
 #include <config.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "window.h"

=== modified file 'src/nsselect.m'
--- src/nsselect.m	2012-08-07 13:37:21 +0000
+++ src/nsselect.m	2012-09-14 19:35:57 +0000
@@ -28,7 +28,6 @@
 /* This should be the first include, as it may set up #defines affecting
    interpretation of even the system includes. */
 #include <config.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "nsterm.h"

=== modified file 'src/nsterm.m'
--- src/nsterm.m	2012-09-11 17:08:02 +0000
+++ src/nsterm.m	2012-09-14 19:35:57 +0000
@@ -35,7 +35,6 @@
 #include <time.h>
 #include <signal.h>
 #include <unistd.h>
-#include <setjmp.h>
 
 #include <c-ctype.h>
 #include <c-strcase.h>

=== modified file 'src/print.c'
--- src/print.c	2012-09-11 04:22:03 +0000
+++ src/print.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/process.c'
--- src/process.c	2012-09-13 02:21:28 +0000
+++ src/process.c	2012-09-14 19:35:57 +0000
@@ -25,12 +25,9 @@
 
 #include <stdio.h>
 #include <errno.h>
-#include <setjmp.h>
 #include <sys/types.h>		/* Some typedefs are used in sys/file.h.  */
 #include <sys/file.h>
 #include <sys/stat.h>
-#include <setjmp.h>
-
 #include <unistd.h>
 #include <fcntl.h>
 
@@ -5421,7 +5418,7 @@
 
 /* Sending data to subprocess */
 
-static jmp_buf send_process_frame;
+static sys_jmp_buf send_process_frame;
 static Lisp_Object process_sent_to;
 
 static _Noreturn void
@@ -5431,7 +5428,7 @@
   sigemptyset (&unblocked);
   sigaddset (&unblocked, SIGPIPE);
   pthread_sigmask (SIG_UNBLOCK, &unblocked, 0);
-  _longjmp (send_process_frame, 1);
+  sys_longjmp (send_process_frame, 1);
 }
 
 static void
@@ -5640,7 +5637,7 @@
   /* 2000-09-21: Emacs 20.7, sparc-sun-solaris-2.6, GCC 2.95.2,
      CFLAGS="-g -O": The value of the parameter `proc' is clobbered
      when returning with longjmp despite being declared volatile.  */
-  if (!_setjmp (send_process_frame))
+  if (!sys_setjmp (send_process_frame))
     {
       p = XPROCESS (proc);  /* Repair any setjmp clobbering.  */
       process_sent_to = proc;

=== modified file 'src/ralloc.c'
--- src/ralloc.c	2012-09-04 17:34:54 +0000
+++ src/ralloc.c	2012-09-14 19:35:57 +0000
@@ -25,7 +25,7 @@
 #ifdef emacs
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"		/* Needed for VALBITS.  */
 #include "blockinput.h"

=== modified file 'src/regex.c'
--- src/regex.c	2012-09-03 19:36:09 +0000
+++ src/regex.c	2012-09-14 19:35:57 +0000
@@ -126,7 +126,6 @@
    that make sense only in Emacs. */
 #ifdef emacs
 
-# include <setjmp.h>
 # include "lisp.h"
 # include "character.h"
 # include "buffer.h"

=== modified file 'src/region-cache.c'
--- src/region-cache.c	2012-09-04 17:34:54 +0000
+++ src/region-cache.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/scroll.c'
--- src/scroll.c	2012-09-04 17:34:54 +0000
+++ src/scroll.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "termchar.h"
 #include "dispextern.h"

=== modified file 'src/search.c'
--- src/search.c	2012-09-04 17:34:54 +0000
+++ src/search.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "syntax.h"
 #include "category.h"

=== modified file 'src/sheap.c'
--- src/sheap.c	2012-01-19 07:21:25 +0000
+++ src/sheap.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 
 #include <unistd.h>
@@ -93,4 +93,3 @@
 	   bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE);
   message ("%s", buf);
 }
-

=== modified file 'src/sound.c'
--- src/sound.c	2012-09-13 02:21:28 +0000
+++ src/sound.c	2012-09-14 19:35:57 +0000
@@ -44,7 +44,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <errno.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "dispextern.h"
 #include "atimer.h"

=== modified file 'src/syntax.c'
--- src/syntax.c	2012-09-08 14:23:01 +0000
+++ src/syntax.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,7 @@
 #include <config.h>
 
 #include <sys/types.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "commands.h"
 #include "character.h"

=== modified file 'src/sysdep.c'
--- src/sysdep.c	2012-09-13 02:21:28 +0000
+++ src/sysdep.c	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 
 #include <execinfo.h>
 #include <stdio.h>
-#include <setjmp.h>
 #ifdef HAVE_PWD_H
 #include <pwd.h>
 #include <grp.h>

=== modified file 'src/term.c'
--- src/term.c	2012-09-13 02:21:28 +0000
+++ src/term.c	2012-09-14 19:35:57 +0000
@@ -25,7 +25,6 @@
 #include <sys/file.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "termchar.h"

=== modified file 'src/termcap.c'
--- src/termcap.c	2012-07-05 18:35:48 +0000
+++ src/termcap.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@
 
 /* Emacs config.h may rename various library functions such as malloc.  */
 #include <config.h>
-#include <setjmp.h>
 #include <sys/file.h>
 #include <fcntl.h>
 #include <unistd.h>

=== modified file 'src/terminal.c'
--- src/terminal.c	2012-09-04 17:34:54 +0000
+++ src/terminal.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 #define TERMHOOKS_INLINE EXTERN_INLINE
 
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "frame.h"

=== modified file 'src/terminfo.c'
--- src/terminfo.c	2012-09-04 17:34:54 +0000
+++ src/terminfo.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,6 @@
 #include <config.h>
 #include "tparam.h"
 
-#include <setjmp.h>
 #include "lisp.h"
 
 /* Define these variables that serve as global parameters to termcap,

=== modified file 'src/textprop.c'
--- src/textprop.c	2012-09-07 14:45:28 +0000
+++ src/textprop.c	2012-09-14 19:35:57 +0000
@@ -17,7 +17,7 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "intervals.h"
 #include "character.h"

=== modified file 'src/tparam.c'
--- src/tparam.c	2012-09-04 17:34:54 +0000
+++ src/tparam.c	2012-09-14 19:35:57 +0000
@@ -19,7 +19,7 @@
 
 /* Emacs config.h may rename various library functions such as malloc.  */
 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"		/* for xmalloc */
 #include "tparam.h"
 

=== modified file 'src/undo.c'
--- src/undo.c	2012-08-28 06:20:08 +0000
+++ src/undo.c	2012-09-14 19:35:57 +0000
@@ -18,7 +18,7 @@

 #include <config.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"

=== modified file 'src/unexaix.c'
--- src/unexaix.c	2012-08-19 20:02:24 +0000
+++ src/unexaix.c	2012-09-14 19:35:57 +0000
@@ -89,7 +89,6 @@
 
 static int pagemask;
 
-#include <setjmp.h>
 #include "lisp.h"
 
 static void

=== modified file 'src/unexcoff.c'
--- src/unexcoff.c	2012-08-19 20:02:24 +0000
+++ src/unexcoff.c	2012-09-14 19:35:57 +0000
@@ -120,7 +120,6 @@
 
 #define ADDR_CORRECT(x) ((char *)(x) - (char*)0)
 
-#include <setjmp.h>
 #include "lisp.h"
 
 static void

=== modified file 'src/unexcw.c'
--- src/unexcw.c	2012-01-19 07:21:25 +0000
+++ src/unexcw.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 #include <config.h>
 #include "unexec.h"
 
-#include <setjmp.h>
 #include <lisp.h>
 #include <stdio.h>
 #include <fcntl.h>

=== modified file 'src/unexsol.c'
--- src/unexsol.c	2012-06-16 12:24:15 +0000
+++ src/unexsol.c	2012-09-14 19:35:57 +0000
@@ -4,7 +4,6 @@
 #include "unexec.h"
 
 #include <dlfcn.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/vm-limit.c'
--- src/vm-limit.c	2012-08-19 21:00:09 +0000
+++ src/vm-limit.c	2012-09-14 19:35:57 +0000
@@ -17,7 +17,6 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
-#include <setjmp.h>
 #include <unistd.h> /* for 'environ', on AIX */
 #include "lisp.h"
 #include "mem-limits.h"

=== modified file 'src/widget.c'
--- src/widget.c	2012-09-07 01:27:44 +0000
+++ src/widget.c	2012-09-14 19:35:57 +0000
@@ -30,7 +30,7 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
+
 #include "lisp.h"
 #include "xterm.h"

=== modified file 'src/window.c'
--- src/window.c	2012-09-11 15:42:50 +0000
+++ src/window.c	2012-09-14 19:35:57 +0000
@@ -23,7 +23,6 @@
 #define WINDOW_INLINE EXTERN_INLINE
 
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2012-09-14 06:55:38 +0000
+++ src/xdisp.c	2012-09-14 19:35:57 +0000
@@ -273,7 +273,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <limits.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "keyboard.h"

=== modified file 'src/xfaces.c'
--- src/xfaces.c	2012-09-11 22:59:50 +0000
+++ src/xfaces.c	2012-09-14 19:35:57 +0000
@@ -204,7 +204,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>              /* This needs to be before termchar.h */
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "character.h"

=== modified file 'src/xfns.c'
--- src/xfns.c	2012-08-18 06:06:39 +0000
+++ src/xfns.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <math.h>
-#include <setjmp.h>
 #include <unistd.h>
 
 /* This makes the fields of a Display accessible, in Xlib header files.  */

=== modified file 'src/xfont.c'
--- src/xfont.c	2012-09-06 08:04:49 +0000
+++ src/xfont.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <X11/Xlib.h>
 
 #include "lisp.h"

=== modified file 'src/xftfont.c'
--- src/xftfont.c	2012-09-06 08:04:49 +0000
+++ src/xftfont.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <X11/Xlib.h>
 #include <X11/Xft/Xft.h>

=== modified file 'src/xgselect.c'
--- src/xgselect.c	2012-09-11 22:59:50 +0000
+++ src/xgselect.c	2012-09-14 19:35:57 +0000
@@ -19,14 +19,12 @@
 
 #include <config.h>
 
-#include <setjmp.h>
 #include "xgselect.h"
 
 #if defined (USE_GTK) || defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
 
 #include <glib.h>
 #include <errno.h>
-#include <setjmp.h>
 #include "xterm.h"
 
 int

=== modified file 'src/xmenu.c'
--- src/xmenu.c	2012-09-07 01:27:44 +0000
+++ src/xmenu.c	2012-09-14 19:35:57 +0000
@@ -33,7 +33,6 @@
 #include <config.h>
 
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "keyboard.h"

=== modified file 'src/xml.c'
--- src/xml.c	2012-06-16 12:24:15 +0000
+++ src/xml.c	2012-09-14 19:35:57 +0000
@@ -20,7 +20,6 @@
 
 #ifdef HAVE_LIBXML2
 
-#include <setjmp.h>
 #include <libxml/tree.h>
 #include <libxml/parser.h>
 #include <libxml/HTMLparser.h>

=== modified file 'src/xrdb.c'
--- src/xrdb.c	2012-07-05 18:35:48 +0000
+++ src/xrdb.c	2012-09-14 19:35:57 +0000
@@ -26,7 +26,6 @@
 #include <epaths.h>
 
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"

=== modified file 'src/xselect.c'
--- src/xselect.c	2012-09-04 17:34:54 +0000
+++ src/xselect.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 #include <config.h>
 #include <limits.h>
 #include <stdio.h>      /* termhooks.h needs this */
-#include <setjmp.h>
 
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>

=== modified file 'src/xsettings.c'
--- src/xsettings.c	2012-07-12 03:45:46 +0000
+++ src/xsettings.c	2012-09-14 19:35:57 +0000
@@ -21,7 +21,6 @@
 
 #include <float.h>
 #include <limits.h>
-#include <setjmp.h>
 #include <fcntl.h>
 #include "lisp.h"
 #include "xterm.h"
@@ -711,12 +710,12 @@
       if (send_event_p)
         store_config_changed_event (Qfont_render,
                                     XCAR (dpyinfo->name_list_element));
-      Vxft_settings 
+      Vxft_settings
 	= make_formatted_string (buf, format,
 				 oldsettings.aa, oldsettings.hinting,
 				 oldsettings.rgba, oldsettings.lcdfilter,
 				 oldsettings.hintstyle, oldsettings.dpi);
-      
+
     }
   else
     FcPatternDestroy (pat);

=== modified file 'src/xsmfns.c'
--- src/xsmfns.c	2012-08-27 17:23:48 +0000
+++ src/xsmfns.c	2012-09-14 19:35:57 +0000
@@ -29,7 +29,6 @@
 #include <unistd.h>
 #include <sys/param.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #include "lisp.h"
 #include "systime.h"

=== modified file 'src/xterm.c'
--- src/xterm.c	2012-09-13 02:21:28 +0000
+++ src/xterm.c	2012-09-14 19:35:57 +0000
@@ -22,7 +22,6 @@
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 
 #ifdef HAVE_X_WINDOWS
 
@@ -47,7 +46,6 @@
 
 #include <fcntl.h>
 #include <errno.h>
-#include <setjmp.h>
 #include <sys/stat.h>
 /* Caused redefinition of DBL_DIG on Netbsd; seems not to be needed.  */
 /* #include <sys/param.h>  */