From: Steven Tamm Date: Thu, 12 Dec 2002 17:10:34 +0000 (+0000) Subject: * macterm.c (mac_check_for_quit_char): Correctly set the X-Git-Tag: ttn-vms-21-2-B4~12033 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=96720f09ea540774b650385a2d56a789fadbe972;p=emacs.git * macterm.c (mac_check_for_quit_char): Correctly set the modifiers of the event to 0. * mac.c (sys_select): Duplicate rfds before calling select to ensure that rfds survive the while loop. --- diff --git a/src/ChangeLog b/src/ChangeLog index d05700302e9..24970fa927f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2002-12-12 Steven Tamm + + * macterm.c (mac_check_for_quit_char): Correctly set the + modifiers of the event to 0. + * mac.c (sys_select): Duplicate rfds before calling select to + ensure that rfds survive the while loop. + 2002-12-11 Kim F. Storm * xdisp.c (try_window_id): Don't call set_cursor_from_row if diff --git a/src/mac.c b/src/mac.c index e81007c4781..bc2d342b197 100644 --- a/src/mac.c +++ b/src/mac.c @@ -2776,7 +2776,7 @@ sys_select (n, rfds, wfds, efds, timeout) else { EMACS_TIME end_time, now; - + EMACS_GET_TIME (end_time); if (timeout) EMACS_ADD_TIME (end_time, end_time, *timeout); @@ -2785,6 +2785,13 @@ sys_select (n, rfds, wfds, efds, timeout) { int r; EMACS_TIME one_second; + SELECT_TYPE orfds; + + FD_ZERO (&orfds); + if (rfds) + { + orfds = *rfds; + } EMACS_SET_SECS (one_second, 1); EMACS_SET_USECS (one_second, 0); @@ -2792,9 +2799,12 @@ sys_select (n, rfds, wfds, efds, timeout) if (timeout && EMACS_TIME_LT(*timeout, one_second)) one_second = *timeout; - if ((r = select (n, rfds, wfds, efds, &one_second)) > 0) - return r; - + if ((r = select (n, &orfds, wfds, efds, &one_second)) > 0) + { + *rfds = orfds; + return r; + } + mac_check_for_quit_char(); EMACS_GET_TIME (now); diff --git a/src/macterm.c b/src/macterm.c index 0fb644222cb..d2299524362 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -13561,6 +13561,8 @@ mac_check_for_quit_char() /* Use an input_event to emulate what the interrupt handler does. */ e.kind = ASCII_KEYSTROKE_EVENT; e.code = quit_char; + e.arg = NULL; + e.modifiers = NULL; e.timestamp = EventTimeToTicks(GetEventTime(event))*(1000/60); XSETFRAME(e.frame_or_window, mwp->mFP); /* Remove event from queue to prevent looping. */