summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-02-25 13:55:37 -0600
committerJesse Luehrs <doy@tozt.net>2012-02-25 13:55:37 -0600
commit5b8b7b3e5fd6aa57bfe2e41002d3bb352a7941fa (patch)
tree9740602a3b0e5c490963e12509d5398e056f643e
parent206d3c0589cc2bb8aac3831250145490eb1cd70b (diff)
downloadterm-filter-5b8b7b3e5fd6aa57bfe2e41002d3bb352a7941fa.tar.gz
term-filter-5b8b7b3e5fd6aa57bfe2e41002d3bb352a7941fa.zip
better handling of the scope guard
-rw-r--r--lib/Term/Filter.pm12
1 files 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 {