--- C:/mantisbt-1.2.1-official/bug_report.php	Fri Apr 23 14:28:34 2010
+++ H:/mantisbt-1.2.1-custom/bug_report.php	Thu May 27 11:39:49 2010
@@ -104,18 +104,31 @@
 		$t_def = custom_field_get_definition( $t_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_report'] ||
-				$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 ) ) {
+		if	(	$t_def['require_report']
+			&&	(	$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
+				)
+			&& !gpc_isset_custom_field( $t_id, $t_def['type'] )
+			) {
 			error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
 			trigger_error( ERROR_EMPTY_FIELD, ERROR );
 		}
-		if ( !custom_field_validate( $t_id, gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], NULL ) ) ) {
-			error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
-			trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR );
+		if( gpc_isset_custom_field( $t_id, $t_def['type'] ) ) {
+			$t_custom_field_value = gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], NULL );
+			if	(	$t_def['display_report']
+				&&	!custom_field_validate(
+							$t_id,
+							$t_custom_field_value
+						) 
+				) {
+				error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
+				trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR );
+			}
 		}
 	}
 
@@ -135,14 +148,32 @@
 
 	# Handle custom field submission
 	foreach( $t_related_custom_field_ids as $t_id ) {
+		$t_def = custom_field_get_definition( $t_id );
 		# Do not set custom field value if user has no write access.
-		if( !custom_field_has_write_access( $t_id, $t_bug_id ) ) {
+		if	(	!$t_def['display_report']
+			||	!custom_field_has_write_access( $t_id, $t_bug_id )
+			) {
+			continue;
+		}
+		
+		$t_custom_field_value = gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], '');
+		if	(	empty($t_custom_field_value)
+			&&	!$t_def['require_report']
+			) {
 			continue;
 		}
 
-		$t_def = custom_field_get_definition( $t_id );
-		if( !custom_field_set_value( $t_id, $t_bug_id, gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], '' ), false ) ) {
+		if( !custom_field_set_value( $t_id, $t_bug_id, $t_custom_field_value, false ) ) {
			error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) );
 			trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR );
 		}
