diff --git a/modules/user/user.module b/modules/user/user.module index 6cb7e7a..8f802c4 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -914,16 +914,16 @@ function user_permission() { */ function user_impersonate_user($new_user = NULL) { global $user; - $user_original = &drupal_static(__FUNCTION__); + $user_original = &drupal_static(__FUNCTION__, array()); if (!isset($new_user)) { - if (isset($user_original) && !empty($user_original)) { + if (!empty($user_original)) { // Restore the previous user from the stack. $user = array_pop($user_original); // Re-enable session saving if we are no longer impersonating a user. if (empty($user_original)) { - drupal_save_session(TRUE); + drupal_save_session(); } } } diff --git a/modules/user/user.test b/modules/user/user.test index f7c893c..ddaad96 100644 --- a/modules/user/user.test +++ b/modules/user/user.test @@ -2329,6 +2329,7 @@ class UserImpersonatingUserTestCase extends DrupalWebTestCase { function testUserImpersonateUser() { global $user; $original_user = $user; + $original_session_saving = drupal_save_session(); // If not currently logged in, use user_user_impersonate_user() to switch to // user 1. If logged in, switch to the anonymous user instead. @@ -2369,7 +2370,9 @@ class UserImpersonatingUserTestCase extends DrupalWebTestCase { // Simpletest to enable session saving again. This is safe because calling // user_revert_user() too often simply results in returning the active user. user_revert_user(); - $this->assertTrue(drupal_save_session(), t('Session saving is enabled.')); + $this->assertEqual(drupal_save_session(), $original_session_saving, t('Session saving is @status.', array( + '@status' => $original_session_saving ? t('enabled') : t('disabled'), + ))); } }