diff --git modules/user/user.admin.inc modules/user/user.admin.inc
index 09fb964..5ee1c8b 100644
--- modules/user/user.admin.inc
+++ modules/user/user.admin.inc
@@ -867,10 +867,17 @@ function user_admin_roles($form, $form_state) {
  * Form submit function. Update the role weights.
  */
 function user_admin_roles_order_submit($form, &$form_state) {
+  $status = array();
   foreach ($form_state['values']['roles'] as $rid => $role_values) {
     $role = $form['roles'][$rid]['#role'];
     $role->weight = $role_values['weight'];
-    user_role_save($role);
+    $status[] = user_role_save($role);
+  }
+  if (in_array(FALSE, $status)) {
+    drupal_set_message(t('Unable to save role settings.'), 'error');
+  }
+  else {
+    drupal_set_message(t('The role settings have been updated.'));
   }
 }
 
diff --git modules/user/user.test modules/user/user.test
index cbde24b..a49f24c 100644
--- modules/user/user.test
+++ modules/user/user.test
@@ -1588,7 +1588,7 @@ class UserRoleAdminTestCase extends DrupalWebTestCase {
   public static function getInfo() {
     return array(
       'name' => 'User role administration',
-      'description' => 'Test adding, editing and deleting user roles.',
+      'description' => 'Test adding, editing and deleting user roles and role weight change operations.',
       'group' => 'User',
     );
   }
@@ -1641,6 +1641,28 @@ class UserRoleAdminTestCase extends DrupalWebTestCase {
     $this->drupalGet('admin/people/permissions/roles/edit/' . DRUPAL_AUTHENTICATED_RID);
     $this->assertResponse(403, t('Access denied when trying to edit the built-in authenticated role.'));
   }
+
+  /**
+   * Test user role weight change operation.
+   */
+  function testRoleWeightChange() {
+    $this->drupalLogin($this->admin_user);
+
+    // Pick up a rand role and get its weight.
+    $rid = array_rand(user_roles());
+    $role = user_role_load($rid);
+    $old_weight = $role->weight;
+
+    // Change the role weight and submit the form.
+    $edit = array('roles['. $rid .'][weight]' => $old_weight + 1);
+    $this->drupalPost('admin/people/permissions/roles', $edit, t('Save order'));
+    $this->assertText(t('The role settings have been updated.'), t('The role settings form submitted successfully.'));
+
+    // Retrieve the saved role and compare its weight.
+    $role = user_role_load($rid);
+    $new_weight = $role->weight;
+    $this->assertTrue(($old_weight + 1) == $new_weight, t('Role weight updated successfully.'));
+  }
 }
 
 /**
