From b7a7e039b4362ac9e35b37896e7a736bd4c35e2c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 28 Dec 2018 17:01:59 +0100 Subject: [PATCH] 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. --- src/globals.h | 15 --------------- src/os_unix.c | 24 ++++++++++++++++++------ src/version.c | 2 ++ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/globals.h b/src/globals.h index eaced2a08..d60968b82 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 d2a8a0ab2..91e302a9e 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 9ea9fc1f6..870ea896d 100644 --- a/src/version.c +++ b/src/version.c @@ -799,6 +799,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 649, /**/ 648, /**/ -- 2.40.0