git-commit-vandalism/compat
Phillip Wood f7da756566 terminal: pop signal handler when terminal is restored
When disable_bits() changes the terminal attributes it uses
sigchain_push_common() to restore the terminal if a signal is received
before restore_term() is called. However there is no corresponding
call to sigchain_pop_common() when the settings are restored so the
signal handler is left on the sigchain stack. This leaves the stack
unbalanced so code such as

sigchain_push_common(my_handler);
...
read_key_without_echo(...);
...
sigchain_pop_common();

pops the handler pushed by disable_bits() rather than the one it
intended to. Additionally "git add -p" changes the terminal settings
every time it reads a key press so the stack can grow significantly.

In order to fix this save_term() now sets up the signal handler so
restore_term() can unconditionally call sigchain_pop_common(). There
are no callers of save_term() outside of terminal.c as the only
external caller was removed by e3f7e01b50 ("Revert "editor: save and
reset terminal after calling EDITOR"", 2021-11-22). Any future callers
of save_term() should benefit from having the signal handler set up
for them.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-02-23 13:30:06 -08:00
..
linux tr2: log N parent process names on Linux 2021-09-07 11:08:00 -07:00
nedmalloc win32: allow building with pedantic mode enabled 2021-09-03 11:40:30 -07:00
poll mingw: workaround for hangs when sending STDIN 2020-02-27 14:23:29 -08:00
regex compat/regex: move stdlib.h up in inclusion chain 2020-04-27 11:21:16 -07:00
simple-ipc simple-ipc: work around issues with Cygwin's Unix socket emulation 2021-11-10 09:12:19 -08:00
stub tr2: make process info collection platform-generic 2021-07-22 13:35:20 -07:00
vcbuild Makefile: stop hardcoding {command,config}-list.h 2021-09-23 15:06:47 -07:00
win32 lazyload: use correct calling conventions 2022-01-09 10:34:53 -08:00
.gitattributes Provide zlib's uncompress2 from compat/zlib-compat.c 2021-10-08 10:45:48 -07:00
access.c git-compat-util: work around for access(X_OK) under root 2019-04-25 17:49:44 +09:00
apple-common-crypto.h
basename.c
bswap.h compat/bswap.h: don't assume MSVC is little-endian 2020-11-11 11:24:47 -08:00
compiler.h bugreport: add compiler info 2020-04-16 15:23:42 -07:00
fileno.c git-compat-util: work around for access(X_OK) under root 2019-04-25 17:49:44 +09:00
fopen.c git_fopen: fix a sparse 'not declared' warning 2017-05-26 12:33:55 +09:00
hstrerror.c
inet_ntop.c
inet_pton.c
memmem.c
mingw.c getcwd(mingw): handle the case when there is no cwd 2022-01-19 11:27:31 -08:00
mingw.h Makefile: add OPEN_RETURNS_EINTR knob 2021-02-26 14:15:51 -08:00
mkdir.c
mkdtemp.c
mmap.c compat: let git_mmap use malloc(3) directly 2021-08-24 14:43:45 -07:00
msvc.c
msvc.h msvc: add pragmas for common warnings 2019-06-25 10:46:57 -07:00
obstack.c compat/obstack: fix -Wcast-function-type warnings 2019-01-17 11:13:38 -08:00
obstack.h obstack: avoid computing offsets from NULL pointer 2020-01-28 23:13:25 -08:00
open.c Makefile: add OPEN_RETURNS_EINTR knob 2021-02-26 14:15:51 -08:00
pread.c
precompose_utf8.c precompose_utf8: make precompose_string_if_needed() public 2021-04-05 17:30:04 -07:00
precompose_utf8.h precompose_utf8: make precompose_string_if_needed() public 2021-04-05 17:30:04 -07:00
qsort_s.c compat/qsort_s.c: avoid using potentially unaligned access 2022-01-07 14:20:58 -08:00
setenv.c
sha1-chunked.c
sha1-chunked.h
snprintf.c
stat.c
strcasestr.c
strdup.c
strlcpy.c
strtoimax.c
strtoumax.c
terminal.c terminal: pop signal handler when terminal is restored 2022-02-23 13:30:06 -08:00
terminal.h terminal: pop signal handler when terminal is restored 2022-02-23 13:30:06 -08:00
unsetenv.c unsetenv(3) returns int, not void 2021-10-29 15:00:58 -07:00
win32.h
win32mmap.c
winansi.c Merge branch 'bc/csprng-mktemps' 2022-02-11 16:55:57 -08:00
zlib-uncompress2.c Provide zlib's uncompress2 from compat/zlib-compat.c 2021-10-08 10:45:48 -07:00