aboutsummaryrefslogtreecommitdiffstats
path: root/vim-mode/vim_mode.pl
diff options
context:
space:
mode:
authorSimon Ruderich <simon@ruderich.org>2010-10-08 23:57:10 +0000
committerSimon Ruderich <simon@ruderich.org>2010-10-08 23:58:10 +0000
commita676f809891739c143f52c52c72e28ef296ccc15 (patch)
tree165c8c3cad468ea3615f159a600fa1bdbaaf903e /vim-mode/vim_mode.pl
parentvim_moderc: Add [!] to :mkv[imrc]. (diff)
downloadirssi-scripts-a676f809891739c143f52c52c72e28ef296ccc15.tar.gz
irssi-scripts-a676f809891739c143f52c52c72e28ef296ccc15.zip
vim_mode: Fix vim_mode.pl crash with invalid regex in :b.
Diffstat (limited to 'vim-mode/vim_mode.pl')
-rw-r--r--vim-mode/vim_mode.pl24
1 files changed, 18 insertions, 6 deletions
diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl
index 575d697..4eacf55 100644
--- a/vim-mode/vim_mode.pl
+++ b/vim-mode/vim_mode.pl
@@ -1520,10 +1520,16 @@ sub ex_buffer {
Irssi::command('window last');
# Go to best regex matching window.
} else {
- my $matches = _matching_windows($buffer);
- if (scalar @$matches > 0) {
- $window = @$matches[0]->{window};
- $item = @$matches[0]->{item};
+ eval {
+ my $matches = _matching_windows($buffer);
+ if (scalar @$matches > 0) {
+ $window = @$matches[0]->{window};
+ $item = @$matches[0]->{item};
+ }
+ };
+ # Catch errors in /$buffer/ regex.
+ if ($@) {
+ _warn($@);
}
}
@@ -1831,8 +1837,14 @@ sub b_windows_cb {
my $buffer = $1;
if ($buffer !~ /^[0-9]$/ and $buffer ne '#') {
# Display matching windows.
- my $matches = _matching_windows($buffer);
- $windows = join ',', map { $_->{text} } @$matches;
+ eval {
+ my $matches = _matching_windows($buffer);
+ $windows = join ',', map { $_->{text} } @$matches;
+ };
+ # Catch errors in /$buffer/ regex.
+ if ($@) {
+ _warn($@);
+ }
}
}