From 05df0b0f9445089d03f7a2933875b9c7266eb96e Mon Sep 17 00:00:00 2001 From: scw Date: Wed, 30 May 2007 11:57:26 +0000 Subject: sigmask properly when leaving chess git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3522 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/chess.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'mbbsd') diff --git a/mbbsd/chess.c b/mbbsd/chess.c index 28da6f3b..9df4f5bc 100644 --- a/mbbsd/chess.c +++ b/mbbsd/chess.c @@ -1015,6 +1015,7 @@ ChessPlay(ChessInfo* info) ChessGameResult game_result; void (*old_handler)(int); const char* game_result_str = 0; + sigset_t old_sigset; if (info == NULL) return; @@ -1046,7 +1047,7 @@ ChessPlay(ChessInfo* info) sigemptyset(&sigset); sigaddset(&sigset, SIGUSR1); - sigprocmask(SIG_UNBLOCK, &sigset, NULL); + sigprocmask(SIG_UNBLOCK, &sigset, &old_sigset); } if (info->mode == CHESS_MODE_WATCH) { @@ -1125,17 +1126,10 @@ ChessPlay(ChessInfo* info) if (info->mode != CHESS_MODE_REPLAY) ChessGenLog(info, game_result); + // currutmp->sig = -1; + sigprocmask(SIG_SETMASK, &old_sigset, NULL); + Signal(SIGUSR1, old_handler); - { - sigset_t sigset; - - sigemptyset(&sigset); - sigaddset(&sigset, SIGUSR1); - sigprocmask(SIG_BLOCK, &sigset, NULL); - - // currutmp->sig = -1; - Signal(SIGUSR1, old_handler); - } CurrentPlayingGameInfo = NULL; } -- cgit v1.2.3