summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-12-21 00:16:32 +0900
committergit <svn-admin@ruby-lang.org>2021-12-21 00:49:03 +0900
commit37aea9d7984d9bf884df121ab0b44168ae1ac0c5 (patch)
tree85853836e8de5b17ab69682d5fe098ff539ea649
parentc3a3f65b4575898ae2ae457bc4f56d1e6bdb169f (diff)
[ruby/reline] Finalize when exception occurred
https://github.com/ruby/reline/commit/1f8a3aee43 Co-authored-by: Alex Gittemeier <me@a.lexg.dev>
-rw-r--r--lib/reline.rb7
-rw-r--r--lib/reline/line_editor.rb2
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/reline.rb b/lib/reline.rb
index 88f1df3995..a9fc49b416 100644
--- a/lib/reline.rb
+++ b/lib/reline.rb
@@ -290,7 +290,6 @@ module Reline
may_req_ambiguous_char_width
line_editor.reset(prompt, encoding: Reline::IOGate.encoding)
- line_editor.set_signal_handlers
if multiline
line_editor.multiline_on
if block_given?
@@ -320,6 +319,7 @@ module Reline
line_editor.rerender
begin
+ line_editor.set_signal_handlers
prev_pasting_state = false
loop do
prev_pasting_state = Reline::IOGate.in_pasting?
@@ -348,6 +348,11 @@ module Reline
line_editor.finalize
Reline::IOGate.deprep(otio)
raise e
+ rescue Exception
+ # Including Interrupt
+ line_editor.finalize
+ Reline::IOGate.deprep(otio)
+ raise
end
line_editor.finalize
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index 2c458388cd..9b206d9adf 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -235,7 +235,7 @@ class Reline::LineEditor
when 'EXIT'
exit
else
- @old_trap.call
+ @old_trap.call if @old_trap.respond_to?(:call)
end
}
begin