From 23bad39c2d516b7834b4fa95de054bf1ed769e8e Mon Sep 17 00:00:00 2001 From: Frédéric Buclin Date: Wed, 16 Apr 2014 22:03:04 +0200 Subject: Bug 997281: New QuickSearch operators can short-circuit each other depending on which ones are tested first r/a=justdave --- Bugzilla/Search/Quicksearch.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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]); -- cgit v1.2.3-24-g4f1b