From 81ae3a574129e5f8b89eabc250e03223a28a7b96 Mon Sep 17 00:00:00 2001 From: Pragmatic Software Date: Mon, 8 Jul 2019 15:51:55 -0700 Subject: [PATCH] Fix split_line issue where it could sometimes forget tokens when encountering unbalanced quotes --- PBot/Interpreter.pm | 4 +++- modules/compiler_vm/languages/_default.pm | 4 +++- modules/compiler_vm/languages/server/_default.pm | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/PBot/Interpreter.pm b/PBot/Interpreter.pm index f951aceb..f1a0a2c0 100644 --- a/PBot/Interpreter.pm +++ b/PBot/Interpreter.pm @@ -572,6 +572,7 @@ sub split_line { my $escaped = 0; my $quote; my $token = ''; + my $last_token = ''; my $ch = ' '; my $last_ch; my $next_ch; @@ -590,7 +591,7 @@ sub split_line { $ignore_quote = 1; $quote = undef; $last_ch = ' '; - $token = ''; + $token = $last_token; } else { # add final token and exit push @args, $token if length $token; @@ -641,6 +642,7 @@ sub split_line { # begin potential quoted argument $pos = $i - 1; $quote = $ch; + $last_token = $token; $token .= $ch unless $opts{strip_quotes}; } next; diff --git a/modules/compiler_vm/languages/_default.pm b/modules/compiler_vm/languages/_default.pm index ae728213..a190abd9 100755 --- a/modules/compiler_vm/languages/_default.pm +++ b/modules/compiler_vm/languages/_default.pm @@ -1040,6 +1040,7 @@ sub split_line { my $escaped = 0; my $quote; my $token = ''; + my $last_token = ''; my $ch = ' '; my $last_ch; my $next_ch; @@ -1058,7 +1059,7 @@ sub split_line { $ignore_quote = 1; $quote = undef; $last_ch = ' '; - $token = ''; + $token = $last_token; } else { # add final token and exit push @args, $token if length $token; @@ -1109,6 +1110,7 @@ sub split_line { # begin potential quoted argument $pos = $i - 1; $quote = $ch; + $last_token = $token; $token .= $ch unless $opts{strip_quotes}; } next; diff --git a/modules/compiler_vm/languages/server/_default.pm b/modules/compiler_vm/languages/server/_default.pm index 83a560c2..599e4bcd 100755 --- a/modules/compiler_vm/languages/server/_default.pm +++ b/modules/compiler_vm/languages/server/_default.pm @@ -103,6 +103,7 @@ sub split_line { my $escaped = 0; my $quote; my $token = ''; + my $last_token = ''; my $ch = ' '; my $last_ch; my $next_ch; @@ -121,7 +122,7 @@ sub split_line { $ignore_quote = 1; $quote = undef; $last_ch = ' '; - $token = ''; + $token = $last_token; } else { # add final token and exit push @args, $token if length $token; @@ -172,6 +173,7 @@ sub split_line { # begin potential quoted argument $pos = $i - 1; $quote = $ch; + $last_token = $token; $token .= $ch unless $opts{strip_quotes}; } next;