]> granicus.if.org Git - vim/commitdiff
patch 8.1.0649: setjmp() variables defined globally are used in one file v8.1.0649
authorBram Moolenaar <Bram@vim.org>
Fri, 28 Dec 2018 16:01:59 +0000 (17:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 28 Dec 2018 16:01:59 +0000 (17:01 +0100)
Problem:    setjmp() variables defined globally are used in one file.
Solution:   Move the declarations to that file.

src/globals.h
src/os_unix.c
src/version.c

index eaced2a08fd74996dda0ebc93c10544b474fbe05..d60968b829f1529b33ecaabd9e9a3ecbd421d285 100644 (file)
@@ -798,21 +798,6 @@ EXTERN int vr_lines_changed INIT(= 0); /* #Lines changed by "gR" so far */
 EXTERN JMP_BUF x_jump_env;
 #endif
 
-#if defined(HAVE_SETJMP_H)
-/*
- * Stuff for setjmp() and longjmp().
- * Used to protect areas where we could crash.
- */
-EXTERN JMP_BUF lc_jump_env;    /* argument to SETJMP() */
-# ifdef SIGHASARG
-/* volatile because it is used in signal handlers. */
-EXTERN volatile sig_atomic_t lc_signal;        /* caught signal number, 0 when no was signal
-                                  caught; used for mch_libcall() */
-# endif
-/* volatile because it is used in signal handler deathtrap(). */
-EXTERN volatile sig_atomic_t lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
-#endif
-
 #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
 /*
  * These flags are set based upon 'fileencoding'.
index d2a8a0ab296689c2f9a841dbdf13463bad921dfb..91e302a9e61925af9acf0198b9c5ef95cae1f81d 100644 (file)
@@ -980,13 +980,25 @@ sig_alarm SIGDEFARG(sigarg)
 }
 #endif
 
-#if (defined(HAVE_SETJMP_H) \
-       && ((defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)) \
-           || defined(FEAT_LIBCALL))) \
-    || defined(PROTO)
+#if defined(HAVE_SETJMP_H) || defined(PROTO)
+// argument to SETJMP()
+static JMP_BUF lc_jump_env;
+
+# ifdef SIGHASARG
+// Caught signal number, 0 when no was signal caught; used for mch_libcall().
+// Volatile because it is used in signal handlers.
+static volatile sig_atomic_t lc_signal;
+# endif
+
+// TRUE when lc_jump_env is valid.
+// Volatile because it is used in signal handler deathtrap().
+static volatile sig_atomic_t lc_active INIT(= FALSE);
+
 /*
  * A simplistic version of setjmp() that only allows one level of using.
+ * Used to protect areas where we could crash.
  * Don't call twice before calling mch_endjmp()!.
+ *
  * Usage:
  *     mch_startjmp();
  *     if (SETJMP(lc_jump_env) != 0)
@@ -1023,8 +1035,8 @@ mch_endjmp(void)
 mch_didjmp(void)
 {
 # if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
-    /* On FreeBSD the signal stack has to be reset after using siglongjmp(),
-     * otherwise catching the signal only works once. */
+    // On FreeBSD the signal stack has to be reset after using siglongjmp(),
+    // otherwise catching the signal only works once.
     init_signal_stack();
 # endif
 }
index 9ea9fc1f6df18d50b291f092d2ddddc3859d45a8..870ea896de87346f3e11bd6a9c4d4e65ddd22afa 100644 (file)
@@ -799,6 +799,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    649,
 /**/
     648,
 /**/