From f9c6ea7a301ccd9b903574a3a3e3600db824c9f6 Mon Sep 17 00:00:00 2001 From: Frédéric Buclin Date: Tue, 22 Apr 2014 14:08:55 +0800 Subject: Bug 997281: New QuickSearch operators can short-circuit each other depending on which ones are tested first --- 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 6f0f8c939..00a970292 100644 --- a/Bugzilla/Search/Quicksearch.pm +++ b/Bugzilla/Search/Quicksearch.pm @@ -436,7 +436,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