From 9ed46e6b6997ce1bb14a13e01cc88425542e7662 Mon Sep 17 00:00:00 2001 From: Nick Briggs Date: Mon, 5 Jul 2021 14:19:23 -0700 Subject: [PATCH] Integer variables referenced from a signal handler (XLocked, XNeedSignal) should be type sig_atomic_t --- inc/ldeXdefs.h | 6 +++--- inc/xdefs.h | 4 ++-- src/keyevent.c | 5 +++-- src/xinit.c | 4 +++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/inc/ldeXdefs.h b/inc/ldeXdefs.h index 3908bef..9a702cd 100755 --- a/inc/ldeXdefs.h +++ b/inc/ldeXdefs.h @@ -27,9 +27,9 @@ #define XUNLOCK #endif /* LOCK_X_UPDATES */ -extern int XLocked; -extern int XNeedSignal; -/* this is !0 if we're locked; it should be 0 or larger always */ +#include +extern volatile sig_atomic_t XLocked; +extern volatile sig_atomic_t XNeedSignal; #endif diff --git a/inc/xdefs.h b/inc/xdefs.h index 48264d2..1ebb96e 100755 --- a/inc/xdefs.h +++ b/inc/xdefs.h @@ -34,9 +34,9 @@ #include #include "xwinmandefs.h" -extern int XLocked; -extern int XNeedSignal; /* this is !0 if we're locked; it should be 0 or larger always */ +extern volatile sig_atomic_t XLocked; +extern volatile sig_atomic_t XNeedSignal; #define XLOCK do { XLocked++; /* printf("L"); fflush(stdout);*/} while (0) #define XUNLOCK(dsp) \ diff --git a/src/keyevent.c b/src/keyevent.c index 0d0a285..a29b18f 100644 --- a/src/keyevent.c +++ b/src/keyevent.c @@ -121,10 +121,11 @@ extern DLword *EmMouseX68K, *EmMouseY68K, *EmKbdAd068K, *EmRealUtilin68K, *EmUti extern DLword *EmKbdAd168K, *EmKbdAd268K, *EmKbdAd368K, *EmKbdAd468K, *EmKbdAd568K; extern u_char *SUNLispKeyMap; extern int LispWindowFd; -extern int RS232C_Fd, RS232C_remain_data, XLocked; +extern int RS232C_Fd, RS232C_remain_data; extern fd_set LispIOFds; fd_set LispReadFds; -int XNeedSignal = 0; /* T if an X interrupt happened while XLOCK asserted */ +extern volatile sig_atomic_t XLocked; +extern volatile sig_atomic_t XNeedSignal; extern int LogFileFd; diff --git a/src/xinit.c b/src/xinit.c index ad048ba..265ff72 100644 --- a/src/xinit.c +++ b/src/xinit.c @@ -11,6 +11,7 @@ #include "version.h" #include +#include #include #include #include @@ -62,7 +63,8 @@ unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight; Colormap Colors; -int XLocked = 0; /* non-zero while doing X ops, to avoid signals */ +volatile sig_atomic_t XLocked = 0; /* non-zero while doing X ops, to avoid signals */ +volatile sig_atomic_t XNeedSignal = 0; /* T if an X interrupt happened while XLOCK asserted */ extern fd_set LispReadFds; /************************************************************************/