]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 531243: Bugzilla crashes on show_bug if it's hit while a custom field is being...
authorFrédéric Buclin <LpSolit@gmail.com>
Thu, 18 Oct 2012 23:23:01 +0000 (01:23 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Thu, 18 Oct 2012 23:23:01 +0000 (01:23 +0200)
r=justdave a=LpSolit

Bugzilla/Field.pm

index 228bea73793a7dfd60ae2f24336eedeb2f01c66c..c4d687afb8a4d47922a6a3c1aa2883e7c64b92d4 100644 (file)
@@ -1034,7 +1034,11 @@ sub create {
     # the parameter isn't sent to create().
     $params->{sortkey} = undef if !exists $params->{sortkey};
     $params->{type} ||= 0;
-    
+    # We mark the custom field as obsolete till it has been fully created,
+    # to avoid race conditions when viewing bugs at the same time.
+    my $is_obsolete = $params->{obsolete};
+    $params->{obsolete} = 1 if $params->{custom};
+
     $dbh->bz_start_transaction();
     $class->check_required_create_fields(@_);
     my $field_values      = $class->run_create_validators($params);
@@ -1063,6 +1067,10 @@ sub create {
             # Insert a default value of "---" into the legal values table.
             $dbh->do("INSERT INTO $name (value) VALUES ('---')");
         }
+
+        # Restore the original obsolete state of the custom field.
+        $dbh->do('UPDATE fielddefs SET obsolete = 0 WHERE id = ?', undef, $field->id)
+          unless $is_obsolete;
     }
 
     return $field;