summaryrefslogtreecommitdiffstats
path: root/lib/Term/Filter.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Term/Filter.pm')
-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 {