From 68a18acf705ba7b62d704e5796d3f5c1a8ea9c72 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Tue, 5 Feb 2008 17:52:48 +0000 Subject: Bug 415544: Mass-change erases all values from custom multi-select fields - Patch by Frédéric Buclin r/a=mkanat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- process_bug.cgi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'process_bug.cgi') diff --git a/process_bug.cgi b/process_bug.cgi index 0e081b407..1cc4e542d 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -89,8 +89,7 @@ sub send_results { $vars->{'header_done'} = 1; } -# Tells us whether or not a field should be changed by process_bug, by -# checking that it's defined and not set to dontchange. +# Tells us whether or not a field should be changed by process_bug. sub should_set { # check_defined is used for fields where there's another field # whose name starts with "defined_" and then the field name--it's used @@ -141,8 +140,11 @@ my $first_bug = $bug_objects[0]; # Used when we're only updating a single bug. if (defined $cgi->param('dontchange')) { foreach my $name ($cgi->param) { next if $name eq 'dontchange'; # But don't delete dontchange itself! + # Skip ones we've already deleted (such as "defined_$name"). + next if !defined $cgi->param($name); if ($cgi->param($name) eq $cgi->param('dontchange')) { $cgi->delete($name); + $cgi->delete("defined_$name"); } } } -- cgit v1.2.3-24-g4f1b