Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.687 diff -u -p -r1.687 user.module --- modules/user/user.module 11 Oct 2006 12:08:29 -0000 1.687 +++ modules/user/user.module 12 Oct 2006 03:25:59 -0000 @@ -1875,9 +1875,14 @@ function user_admin_role() { if ($op == t('Save role')) { if ($edit['name']) { - db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $edit['name'], $id); - drupal_set_message(t('The changes have been saved.')); - drupal_goto('admin/user/roles'); + if (db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s' AND rid != $id", $edit['name']))) { + form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $edit['name']))); + } + else { + db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $edit['name'], $id); + drupal_set_message(t('The changes have been saved.')); + drupal_goto('admin/user/roles'); + } } else { form_set_error('name', t('You must specify a valid role name.')); @@ -1894,9 +1899,14 @@ function user_admin_role() { } else if ($op == t('Add role')) { if ($edit['name']) { - db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']); - drupal_set_message(t('The role has been added.')); - drupal_goto('admin/user/roles'); + if (!db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s'", $edit['name']))) { + db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']); + drupal_set_message(t('The role has been added.')); + drupal_goto('admin/user/roles'); + } + else { + form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $edit['name']))); + } } else { form_set_error('name', t('You must specify a valid role name.'));