]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 543500: Cannot add/edit components anymore (regression in user matching)
authorFrédéric Buclin <LpSolit@gmail.com>
Tue, 2 Feb 2010 17:41:28 +0000 (18:41 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Tue, 2 Feb 2010 17:41:28 +0000 (18:41 +0100)
r/a=mkanat

Bugzilla/User.pm

index d1e4694eca1a42668089c4563eba948d34113ff6..244bc5b9415beccfc57ece345c8ca585f80584e4 100644 (file)
@@ -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;
         }
     }