Commit fc443eda authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 531243: Bugzilla crashes on show_bug if it's hit while a custom field is being added

r=justdave a=LpSolit
parent ddc96746
...@@ -1035,7 +1035,11 @@ sub create { ...@@ -1035,7 +1035,11 @@ sub create {
# the parameter isn't sent to create(). # the parameter isn't sent to create().
$params->{sortkey} = undef if !exists $params->{sortkey}; $params->{sortkey} = undef if !exists $params->{sortkey};
$params->{type} ||= 0; $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(); $dbh->bz_start_transaction();
$class->check_required_create_fields(@_); $class->check_required_create_fields(@_);
my $field_values = $class->run_create_validators($params); my $field_values = $class->run_create_validators($params);
...@@ -1064,6 +1068,10 @@ sub create { ...@@ -1064,6 +1068,10 @@ sub create {
# Insert a default value of "---" into the legal values table. # Insert a default value of "---" into the legal values table.
$dbh->do("INSERT INTO $name (value) VALUES ('---')"); $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; return $field;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment