From 85079ad4d726e64089d9e0efa9faa36a084b7d67 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Mon, 8 Apr 2024 17:15:24 -0700 Subject: [PATCH] Fix compatibility when SIGINT handler is installed by non-Python When a native (Rust, C) program installs SIGINT handler and calls into Python, `signal.getsignal` can return `None`, which is not a valid value for the 2nd parameter of `signal.signal`. Fix it by checking `None` explicitly. --- src/prompt_toolkit/application/application.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/prompt_toolkit/application/application.py b/src/prompt_toolkit/application/application.py index d4637811b..d93c24398 100644 --- a/src/prompt_toolkit/application/application.py +++ b/src/prompt_toolkit/application/application.py @@ -1621,5 +1621,6 @@ def _restore_sigint_from_ctypes() -> Generator[None, None, None]: try: yield finally: - signal.signal(signal.SIGINT, sigint) + if sigint is not None: + signal.signal(signal.SIGINT, sigint) pythonapi.PyOS_setsig(signal.SIGINT, sigint_os)