Index: flag.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/Attic/flag.inc,v
retrieving revision 1.1.2.30.2.6
diff -u -r1.1.2.30.2.6 flag.inc
--- flag.inc	14 Sep 2009 22:23:47 -0000	1.1.2.30.2.6
+++ flag.inc	27 Sep 2009 22:56:11 -0000
@@ -236,24 +236,35 @@
   }
 
   /**
-   * Validates a flag settings
+   * Validates a flag settings.
+   *
+   * @return
+   *   A list of errors encountered while validating this flag's options.
    */
   function validate() {
-    $this->validate_name();
+    return $this->validate_name();
   }
 
   function validate_name() {
+    $errors = array();
+
     // Ensure a safe machine name.
     if (!preg_match('/^[a-z_][a-z0-9_]*$/', $this->name)) {
-      form_set_error('name', t('The flag name may only contain lowercase letters, underscores, and numbers.'));
+      $errors['name'][] = array(
+        'error' => 'flag_name_characters',
+        'message' => t('The flag name may only contain lowercase letters, underscores, and numbers.'),
+      );
     }
     // Ensure the machine name is unique.
-    if (!isset($this->fid)) {
-      $flag = flag_get_flag($this->name);
-      if (!empty($flag)) {
-        form_set_error('name', t('Flag names must be unique. This flag name is already in use.'));
-      }
+    $flag = flag_get_flag($this->name);
+    if (!empty($flag) && (!isset($this->fid) || $flag->fid != $this->fid)) {
+      $errors['name'][] = array(
+        'error' => 'flag_name_unique',
+        'message' => t('Flag names must be unique. This flag name is already in use.'),
+      );
     }
+
+    return $errors;
   }
 
   /**
Index: includes/flag.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/includes/Attic/flag.admin.inc,v
retrieving revision 1.1.4.2.2.4
diff -u -r1.1.4.2.2.4 flag.admin.inc
--- includes/flag.admin.inc	18 Sep 2009 22:30:28 -0000	1.1.4.2.2.4
+++ includes/flag.admin.inc	27 Sep 2009 22:56:11 -0000
@@ -153,7 +153,12 @@
 function flag_add_form_validate($form, &$form_state) {
   $flag = flag_flag::factory_by_content_type($form_state['values']['type']);
   $flag->name = $form_state['values']['name'];
-  $flag->validate_name();
+  $errors = $flag->validate_name();
+  foreach ($errors as $field => $field_errors) {
+    foreach ($field_errors as $error) {
+      form_set_error($field, $error['message']);
+    }
+  }
 }
 
 function flag_add_form_submit($form, &$form_state) {
@@ -383,7 +388,12 @@
 
   $flag = $form['#flag'];
   $flag->form_input($form_values);
-  $flag->validate();
+  $errors = $flag->validate();
+  foreach ($errors as $field => $field_errors) {
+    foreach ($field_errors as $error) {
+      form_set_error($field, $error['message']);
+    }
+  }
 }
 
 /**
