Fix hang with large yanksemacs-24
commita27ae9d7650a1230d4359eaf0a949f827315a6d2
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 17 Jul 2015 18:54:24 +0000 (17 11:54 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 5 Aug 2015 17:36:46 +0000 (5 10:36 -0700)
tree22b1733c43693ef2869a1408a7783efc35b6b16e
parenta5e6f33b4c8222ad62fdd7ff4bb0f8c5fac432c1
Fix hang with large yanks

Backport of master commit 0592cefd03f1de2f04b721d07a16e6e0a9e48f73.
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.
src/dispextern.h
src/emacs.c
src/keyboard.c
src/sysdep.c