mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
Fix potential assertion failure on SIGTERM
If SIGTERM is delivered to a background thread, a function call to sanitize the reader state would crash in assert_is_main_thread(). In this case we are about to exit so there's no need to fix the reader state. Skip it on background threads.
This commit is contained in:
parent
49b88868df
commit
fe3e3b3b50
1 changed files with 4 additions and 2 deletions
|
@ -12,7 +12,7 @@ use crate::key::{
|
||||||
Key, Modifiers,
|
Key, Modifiers,
|
||||||
};
|
};
|
||||||
use crate::reader::{reader_current_data, reader_test_and_clear_interrupted};
|
use crate::reader::{reader_current_data, reader_test_and_clear_interrupted};
|
||||||
use crate::threads::iothread_port;
|
use crate::threads::{iothread_port, is_main_thread};
|
||||||
use crate::universal_notifier::default_notifier;
|
use crate::universal_notifier::default_notifier;
|
||||||
use crate::wchar::{encode_byte_to_char, prelude::*};
|
use crate::wchar::{encode_byte_to_char, prelude::*};
|
||||||
use crate::wutil::encoding::{mbrtowc, mbstate_t, zero_mbstate};
|
use crate::wutil::encoding::{mbrtowc, mbstate_t, zero_mbstate};
|
||||||
|
@ -493,7 +493,9 @@ pub(crate) fn terminal_protocols_disable_ifn() {
|
||||||
if IS_TMUX.load() {
|
if IS_TMUX.load() {
|
||||||
let _ = write_to_fd("\x1b[?1004l".as_bytes(), STDOUT_FILENO);
|
let _ = write_to_fd("\x1b[?1004l".as_bytes(), STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
|
if is_main_thread() {
|
||||||
reader_current_data().map(|data| data.save_screen_state());
|
reader_current_data().map(|data| data.save_screen_state());
|
||||||
|
}
|
||||||
TERMINAL_PROTOCOLS.store(false, Ordering::Release);
|
TERMINAL_PROTOCOLS.store(false, Ordering::Release);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue