diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2014-04-16 22:03:04 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2014-04-16 22:03:04 +0200 |
commit | 23bad39c2d516b7834b4fa95de054bf1ed769e8e (patch) | |
tree | 873190f4916a795d5b691ba5dc3192d276717f5d | |
parent | 060fa9003b9177a73f02ba5ea561bb5be306c74a (diff) | |
download | bugzilla-23bad39c2d516b7834b4fa95de054bf1ed769e8e.tar.gz bugzilla-23bad39c2d516b7834b4fa95de054bf1ed769e8e.tar.xz |
Bug 997281: New QuickSearch operators can short-circuit each other depending on which ones are tested first
r/a=justdave
-rw-r--r-- | Bugzilla/Search/Quicksearch.pm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm index 1a8823488..98e8a6482 100644 --- a/Bugzilla/Search/Quicksearch.pm +++ b/Bugzilla/Search/Quicksearch.pm @@ -402,7 +402,11 @@ sub _handle_field_names { # Generic field1,field2,field3:value1,value2 notation. # We have to correctly ignore commas and colons in quotes. - foreach my $symbol (keys %{ OPERATOR_SYMBOLS() }) { + # Longer operators must be tested first as we don't want single character + # operators such as <, > and = to be tested before <=, >= and !=. + my @operators = sort { length($b) <=> length($a) } keys %{ OPERATOR_SYMBOLS() }; + + foreach my $symbol (@operators) { my @field_values = _parse_line($symbol, 1, $or_operand); next unless scalar @field_values == 2; my @fields = _parse_line(',', 1, $field_values[0]); |