Index: email_confirm.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/email_confirm/email_confirm.module,v
retrieving revision 1.1.4.18
diff -b -u -p -r1.1.4.18 email_confirm.module
--- email_confirm.module	24 Oct 2010 19:43:54 -0000	1.1.4.18
+++ email_confirm.module	12 Nov 2010 22:32:23 -0000
@@ -113,6 +113,9 @@ function email_confirm_user($op, &$edit,
   switch ($op) {
     case 'submit':
       if (!empty($edit['mail']) && $account->mail != $edit['mail'] && !user_access('administer users')) {
+        // Set a temporary session variable to indicate that the email was changed. Is used in hook_exit
+        // to clear out a Drupal message set by the user module after user_save() is called.
+        $_SESSION['email_changed'] = TRUE;
         email_confirm_build_mail($edit);
         module_invoke_all('email_confirm', 'email change', $account->uid, $account->mail, $edit['mail']);
         if (module_exists('rules')) {
@@ -310,6 +313,29 @@ within 24 hours.
 }
 
 /**
+ * Implementation of hook_exit().
+ */
+function email_confirm_exit() {
+  if (isset($_SESSION['email_changed'])) {
+    $pruned_messages = array();
+    $status_messages = drupal_get_messages('status', TRUE);
+    if (count($status_messages)) {
+      foreach ($status_messages['status'] as $i => $message) {
+        if (strcmp($message, t('The changes have been saved.')) != 0) {
+          $pruned_messages[] = $message;
+        }
+      }
+      if (count($pruned_messages)) {
+        foreach ($pruned_messages as $message) {
+          drupal_set_message($message, 'status');
+        }
+      }
+    }
+    unset($_SESSION['email_changed']);
+  }
+}
+
+/**
  * Mail Edit module integration
  */
 if (module_exists('mail_edit')) {
