summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-12-28 17:01:59 +0100
committerBram Moolenaar <Bram@vim.org>2018-12-28 17:01:59 +0100
commitb7a7e039b4362ac9e35b37896e7a736bd4c35e2c (patch)
treea17c1fad9e3eaaae0d5de4ec50c62c370892b2a6
parentc8c8849267503b2d2d6d821047ee8619c7821728 (diff)
patch 8.1.0649: setjmp() variables defined globally are used in one filev8.1.0649
Problem: setjmp() variables defined globally are used in one file. Solution: Move the declarations to that file.
-rw-r--r--src/globals.h15
-rw-r--r--src/os_unix.c24
-rw-r--r--src/version.c2
3 files changed, 20 insertions, 21 deletions
diff --git a/src/globals.h b/src/globals.h
index eaced2a08f..d60968b829 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -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'.
diff --git a/src/os_unix.c b/src/os_unix.c
index d2a8a0ab29..91e302a9e6 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -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
}
diff --git a/src/version.c b/src/version.c
index 9ea9fc1f6d..870ea896de 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 649,
+/**/
648,
/**/
647,