diff --git a/modules/user.module b/modules/user.module
index b3250077291694677d75ac55290b1ffeeec960ad..425a8029c5ca45eb40a34c8731fc69cde91a2314 100644
--- a/modules/user.module
+++ b/modules/user.module
@@ -903,19 +903,6 @@ function user_edit($edit = array()) {
         $error = t("The e-mail address '%s' is already taken.", array("%s" => $edit["mail"]));
       }
       else if ($user->uid) {
-        foreach (module_list() as $module) {
-          if (module_hook($module, "user")) {
-            $result = module_invoke($module, "user", "edit_validate", $edit, $user);
-          }
-          if (is_array($result)) {
-            $data = array_merge($data, $result);
-          }
-          elseif (is_string($result)) {
-            $error = $result;
-            break;
-          }
-        }
-
         /*
         ** If required, check that proposed passwords match.  If so,
         ** add new password to $edit.
@@ -947,6 +934,24 @@ function user_edit($edit = array()) {
            $edit["session"] = $user->session;
         }
 
+        /*
+        ** Have the modules that extend the user information validate
+        ** their data.
+        */
+
+        foreach (module_list() as $module) {
+          if (module_hook($module, "user")) {
+            $result = module_invoke($module, "user", "edit_validate", $edit, $user);
+          }
+          if (is_array($result)) {
+            $data = array_merge($data, $result);
+          }
+          elseif (is_string($result)) {
+            $error = $result;
+            break;
+          }
+        }
+
         if (!$error) {
           /*
           ** Save user information:
diff --git a/modules/user/user.module b/modules/user/user.module
index b3250077291694677d75ac55290b1ffeeec960ad..425a8029c5ca45eb40a34c8731fc69cde91a2314 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -903,19 +903,6 @@ function user_edit($edit = array()) {
         $error = t("The e-mail address '%s' is already taken.", array("%s" => $edit["mail"]));
       }
       else if ($user->uid) {
-        foreach (module_list() as $module) {
-          if (module_hook($module, "user")) {
-            $result = module_invoke($module, "user", "edit_validate", $edit, $user);
-          }
-          if (is_array($result)) {
-            $data = array_merge($data, $result);
-          }
-          elseif (is_string($result)) {
-            $error = $result;
-            break;
-          }
-        }
-
         /*
         ** If required, check that proposed passwords match.  If so,
         ** add new password to $edit.
@@ -947,6 +934,24 @@ function user_edit($edit = array()) {
            $edit["session"] = $user->session;
         }
 
+        /*
+        ** Have the modules that extend the user information validate
+        ** their data.
+        */
+
+        foreach (module_list() as $module) {
+          if (module_hook($module, "user")) {
+            $result = module_invoke($module, "user", "edit_validate", $edit, $user);
+          }
+          if (is_array($result)) {
+            $data = array_merge($data, $result);
+          }
+          elseif (is_string($result)) {
+            $error = $result;
+            break;
+          }
+        }
+
         if (!$error) {
           /*
           ** Save user information: