From 0f03a5af36d2c0284024e228873562c521773148 Mon Sep 17 00:00:00 2001 From: piaip Date: Sun, 9 Mar 2008 05:41:39 +0000 Subject: - talk: reduce GotoNewHand crash (C-Uhh or C-Urhh) git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3980 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/talk.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'mbbsd/talk.c') diff --git a/mbbsd/talk.c b/mbbsd/talk.c index 138dde54..70bcdb97 100644 --- a/mbbsd/talk.c +++ b/mbbsd/talk.c @@ -3487,20 +3487,29 @@ FindAngel(void){ static inline void GotoNewHand(){ - if (currutmp && currutmp->mode != EDITING){ - char old_board[IDLEN + 1] = ""; - if (currboard[0]) - strlcpy(old_board, currboard, IDLEN + 1); + char old_board[IDLEN + 1] = ""; + int canRead = 1; - if (enter_board(GLOBAL_NEWBIE)==0) { - Read(); - } + if (currutmp && currutmp->mode == EDITING) + return; - if (old_board[0]) - enter_board(old_board); + // usually crashed as 'assert(currbid == brc_currbid)' + if (currboard[0]) { + strlcpy(old_board, currboard, IDLEN + 1); + currboard = "";// force enter_board } + + if (enter_board(GLOBAL_NEWBIE) == 0) + canRead = 1; + + if (canRead) + Read(); + + if (canRead && old_board[0]) + enter_board(old_board); } + static inline void NoAngelFound(const char* msg){ move(b_lines, 0); -- cgit v1.2.3