From: Frédéric Buclin Date: Tue, 2 Feb 2010 17:41:28 +0000 (+0100) Subject: Bug 543500: Cannot add/edit components anymore (regression in user matching) X-Git-Tag: bugzilla-3.6rc1~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2880ab16577c3976cec8fc59421ee6d7aac5d3da;p=thirdparty%2Fbugzilla.git Bug 543500: Cannot add/edit components anymore (regression in user matching) r/a=mkanat --- diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index d1e4694eca..244bc5b941 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; } }