Index: link.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/link/link.module,v
retrieving revision 1.25.2.10
diff -u -p -r1.25.2.10 link.module
--- link.module	16 Jan 2011 05:11:22 -0000	1.25.2.10
+++ link.module	24 Jan 2011 17:55:27 -0000
@@ -377,7 +377,7 @@ function _link_sanitize(&$item, $delta, 
   else {
     $title = '';
   }
-  
+
   // Replace tokens.
   if ($title && ($instance['settings']['title'] == 'value' || $instance['settings']['enable_tokens'])) {
     // Load the node if necessary for nodes in views.
@@ -435,7 +435,7 @@ function _link_sanitize(&$item, $delta, 
   elseif(!isset($item['title'])) {
     $item['title'] = $item['url'];
   }*/
-  
+
 }
 
 /**
@@ -541,7 +541,7 @@ function link_field_process($element, $f
       '#type' => 'textfield',
       '#maxlength' => '255',
       '#title' => t('Title'),
-      '#required' => ($settings['title'] == 'required' && !empty($element['#value']['url'])) ? TRUE : FALSE,
+      '#required' => ($settings['title'] == 'required' && (($element['#delta'] == 0 && $element['#required']) || !empty($element['#value']['url']))) ? TRUE : FALSE,
       '#default_value' => isset($element['#value']['title']) ? $element['#value']['title'] : NULL,
     );
   }
@@ -561,6 +561,11 @@ function link_field_process($element, $f
       '#default_value' => isset($attributes['target']) ? $attributes['target'] : FALSE,
     );
   }
+
+  // To prevent an extra required indicator, disable the required flag on the
+  // base element since all the sub-fields are already required if desired.
+  $element['#required'] = FALSE;
+
   return $element;
 }
 
@@ -843,4 +848,4 @@ function link_content_migrate_instance_a
       && $instance_value['widget']['type'] == 'link') {
     $instance_value['widget']['type'] = 'link_field';
   }
-}
\ No newline at end of file
+}
