# HG changeset patch # User Bram Moolenaar # Date 1546013706 -3600 # Node ID 186eebc31ec0282c9e2386539b128b3723d85cc6 # Parent 97b40b4c6911ab800ffaf8fe1aca86639d91fab3 patch 8.1.0649: setjmp() variables defined globally are used in one file commit https://github.com/vim/vim/commit/b7a7e039b4362ac9e35b37896e7a736bd4c35e2c Author: Bram Moolenaar Date: Fri Dec 28 17:01:59 2018 +0100 patch 8.1.0649: setjmp() variables defined globally are used in one file Problem: setjmp() variables defined globally are used in one file. Solution: Move the declarations to that file. diff --git a/src/globals.h b/src/globals.h --- a/src/globals.h +++ b/src/globals.h @@ -798,21 +798,6 @@ EXTERN int vr_lines_changed INIT(= 0); / 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 --- 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 --- 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,