diff --git bp-settings/bp-settings-actions.php bp-settings/bp-settings-actions.php
index 7b4756b..dfed712 100644
--- bp-settings/bp-settings-actions.php
+++ bp-settings/bp-settings-actions.php
@@ -24,6 +24,12 @@ function bp_core_screen_general_settings() {
 		if ( is_super_admin() || ( !empty( $_POST['pwd'] ) && $_POST['pwd'] != '' && wp_check_password( $_POST['pwd'], $bp->displayed_user->userdata->user_pass, $bp->displayed_user->id ) ) ) {
 
 			$update_user = get_userdata( $bp->displayed_user->id );
+			
+			// The structure of the $update_user object changed in WP 3.3, but
+			// wp_update_user() still expects the old format
+			if ( isset( $update_user->data ) && is_object( $update_user->data ) ) {
+				$update_user = $update_user->data;
+			}
 
 			// Make sure changing an email address does not already exist
 			if ( $_POST['email'] != '' ) {
@@ -80,15 +86,8 @@ function bp_core_screen_general_settings() {
 				unset( $update_user->user_pass );
 			}
 
-			// The structure of the $update_user object changed in WP 3.3, but
-			// wp_update_user() still expects the old format
-			if ( isset( $update_user->data ) && is_object( $update_user->data ) ) {
-				$update_user = $update_user->data;
-			}
-
 			// Make sure these changes are in $bp for the current page load
 			if ( ( false === $email_error ) && ( false === $pass_error ) && ( wp_update_user( get_object_vars( $update_user ) ) ) ) {
-				$bp->displayed_user->userdata = bp_core_get_core_userdata( $bp->displayed_user->id );
 				$bp_settings_updated = true;
 			}
 
@@ -112,6 +111,8 @@ function bp_core_screen_general_settings() {
 
 		// Execute additional code
 		do_action( 'bp_core_general_settings_after_save' );
+		
+		bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ) );
 	}
 
 	// Load the template
