diff --git a/include/class.user.php b/include/class.user.php
index 1dd4736b2740c2ecdbed95b228bef50d02f637b0..165eebb100afe5c47ecf9b056d65f35f19f0cee5 100644
--- a/include/class.user.php
+++ b/include/class.user.php
@@ -488,42 +488,51 @@ implements TemplateVariable {
                 $valid = false;
             elseif (!$staff && !$entry->isValidForClient())
                 $valid = false;
-            elseif (($form= $entry->getDynamicForm())
-                        && $form->get('type') == 'U'
-                        && ($f=$form->getField('email'))
-                        && $f->getClean()
-                        && ($u=User::lookup(array('emails__address'=>$f->getClean())))
-                        && $u->id != $this->getId()) {
+            elseif ($entry->getDynamicForm()->get('type') == 'U'
+                    && ($f=$entry->getField('email'))
+                    &&  $f->getClean()
+                    && ($u=User::lookup(array('emails__address'=>$f->getClean())))
+                    && $u->id != $this->getId()) {
                 $valid = false;
                 $f->addError(__('Email is assigned to another user'));
             }
+
+            if (!$valid)
+                $errors = array_merge($errors, $entry->errors());
         }
 
+
         if (!$valid)
             return false;
 
+        // Save the entries
         foreach ($forms as $entry) {
-            if (($f=$entry->getDynamicForm()) && $f->get('type') == 'U') {
-                if (($name = $f->getField('name'))) {
+            if ($entry->getDynamicForm()->get('type') == 'U') {
+                //  Name field
+                if (($name = $entry->getField('name'))) {
                     $name = $name->getClean();
                     if (is_array($name))
                         $name = implode(', ', $name);
                     $this->name = $name;
                 }
 
-                if (($email = $f->getField('email'))) {
+                // Email address field
+                if (($email = $entry->getField('email'))) {
                     $this->default_email->address = $email->getClean();
                     $this->default_email->save();
                 }
             }
+
             // DynamicFormEntry::save returns the number of answers updated
             if ($entry->save()) {
                 $this->updated = SqlFunction::NOW();
             }
         }
+
         return $this->save();
     }
 
+
     function save($refetch=false) {
         // Drop commas and reorganize the name without them
         $parts = array_map('trim', explode(',', $this->name));