• Paul Eggert's avatar
    Fix hang with large yanks · a27ae9d7
    Paul Eggert authored
    Backport of master commit 0592cefd.
    This should fix the bug fixed by Mike Crowe's patch in:
    https://lists.gnu.org/archive/html/emacs-devel/2015-07/msg00106.html
    A problem in this area has been reported by several users; see
    Bug#16737, Bug#17101, Bug#17026, Bug#17172, Bug#19320, Bug#20283.
    This fix differs from Mike Crowe's patch in that it should avoid a
    race condition that could lose SIGIO signals.  ignore_sigio dates
    back to the 1980s when some platforms couldn't block signals, and
    could only ignore them, which led to races when signals arrived
    while being ignored.  We shouldn't have to worry about those old
    platforms now.
    * src/dispextern.h, src/sysdep.c (ignore_sigio): Remove.
    * src/emacs.c (shut_down_emacs):
    Don't call ignore_sigio; unrequest_sigio should suffice.
    * src/keyboard.c (kbd_buffer_store_buffered_event):
    Use unrequest_sigio, not ignore_sigio.
    (kbd_buffer_get_event):
    Call request_sigio when getting the ball rolling again.
    a27ae9d7
emacs.c 74.3 KB