--- C:/mantis/mantisbt-1.2.1-official/bug_update.php	Fri Apr 23 14:28:34 2010
+++ C:/mantis/mantisbt-1.2.1-patches/bug_update.php	Wed Jun 30 09:42:05 2010
@@ -137,19 +137,19 @@
 			continue;
 		}
 
+		$t_old_custom_field_value = custom_field_get_value( $t_id, $f_bug_id );
 		# Produce an error if the field is required but wasn't posted
-		if ( !gpc_isset_custom_field( $t_id, $t_def['type'] ) &&
-			( $t_def['require_' . $t_custom_status_label] ||
-				$t_def['type'] == CUSTOM_FIELD_TYPE_ENUM ||
-				$t_def['type'] == CUSTOM_FIELD_TYPE_LIST ||
-				$t_def['type'] == CUSTOM_FIELD_TYPE_MULTILIST ||
-				$t_def['type'] == CUSTOM_FIELD_TYPE_RADIO ) ) {
-			error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
-			trigger_error( ERROR_EMPTY_FIELD, ERROR );
+		if	(	$t_def['require_' . $t_custom_status_label]
+			&&	$t_def['type'] != CUSTOM_FIELD_TYPE_CHECKBOX
+			&&	!gpc_isset_custom_field($t_id, $t_def['type'])
+			) {
+			if(!isset($t_old_custom_field_value)) {
+				error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
+				trigger_error( ERROR_EMPTY_FIELD, ERROR );
+			}
 		}
 
 		$t_new_custom_field_value = gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], '' );
-		$t_old_custom_field_value = custom_field_get_value( $t_id, $f_bug_id );
 
 		# Don't update the custom field if the new value both matches the old value and is valid
 		# This ensures that changes to custom field validation will force the update of old invalid custom field values
