From 5b8b7b3e5fd6aa57bfe2e41002d3bb352a7941fa Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 25 Feb 2012 13:55:37 -0600 Subject: better handling of the scope guard --- lib/Term/Filter.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/Term/Filter.pm b/lib/Term/Filter.pm index f7e8136..34be763 100644 --- a/lib/Term/Filter.pm +++ b/lib/Term/Filter.pm @@ -147,13 +147,17 @@ sub _setup { $prev_winch->(); }; - $self->_callback('setup', @cmd); - - return Scope::Guard->new(sub { + my $setup_called; + my $guard = Scope::Guard->new(sub { $SIG{WINCH} = $prev_winch; $self->_raw_mode(0); - $self->_callback('cleanup'); + $self->_callback('cleanup') if $setup_called; }); + + $self->_callback('setup', @cmd); + $setup_called = 1; + + return $guard; } sub _read_from_handle { -- cgit v1.2.3