From 663c65a3bf61dc9f0ee09bf64a62c2249b383a76 Mon Sep 17 00:00:00 2001 From: Frédéric Buclin Date: Tue, 2 Feb 2010 18:39:16 +0100 Subject: Bug 543500: Cannot add/edit components anymore (regression in user matching) r/a=mkanat --- Bugzilla/User.pm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'Bugzilla/User.pm') diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index d1e4694ec..244bc5b94 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1197,25 +1197,21 @@ sub match_field { } $raw_field = clean_text($raw_field || ''); - # Tolerate fields that do not exist (in case you specify - # e.g. the QA contact, and it's currently not in use). - next unless ($raw_field && $raw_field ne ''); - - my @queries = (); - # Now we either split $raw_field by spaces/commas and put the list # into @queries, or in the case of fields which only accept single # entries, we simply use the verbatim text. - - # single field + my @queries; if ($fields->{$field}->{'type'} eq 'single') { @queries = ($raw_field); - - # multi-field + # We will repopulate it later if a match is found, else it must + # be set to an empty string so that the field remains defined. + $data->{$field} = ''; } elsif ($fields->{$field}->{'type'} eq 'multi') { @queries = split(/[\s,;]+/, $raw_field); - + # We will repopulate it later if a match is found, else it must + # be undefined. + delete $data->{$field}; } else { # bad argument @@ -1225,6 +1221,10 @@ sub match_field { }); } + # Tolerate fields that do not exist (in case you specify + # e.g. the QA contact, and it's currently not in use). + next unless (defined $raw_field && $raw_field ne ''); + my $limit = 0; if ($params->{'maxusermatches'}) { $limit = $params->{'maxusermatches'} + 1; @@ -1284,7 +1284,7 @@ sub match_field { if ($fields->{$field}->{'type'} eq 'single') { $data->{$field} = $logins[0] || ''; } - else { + elsif (scalar @logins) { $data->{$field} = \@logins; } } -- cgit v1.2.3-24-g4f1b