diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-12-28 17:01:59 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-12-28 17:01:59 +0100 |
commit | b7a7e039b4362ac9e35b37896e7a736bd4c35e2c (patch) | |
tree | a17c1fad9e3eaaae0d5de4ec50c62c370892b2a6 | |
parent | c8c8849267503b2d2d6d821047ee8619c7821728 (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.h | 15 | ||||
-rw-r--r-- | src/os_unix.c | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |