--- subuser.module.1	2010-05-07 15:25:12.783761641 +0200
+++ subuser.module	2010-05-07 15:35:00.103759119 +0200
@@ -81,9 +81,9 @@
  * "Log out (return)".
  */
 function subuser_translated_menu_link_alter(&$item, $map) {
-  if ($item['href'] == 'logout' && isset($_SESSION['subuser_uid'])) {
+  if ($item['href'] == 'logout' && !empty($_SESSION['subuser_uid'])) {
     $item['title'] = t('Log out (return)');
-    $item['href'] = 'subuser/switch/' . $_SESSION['subuser_uid'];
+    $item['href'] = 'subuser/switch/' . end($_SESSION['subuser_uid']);
   }
 }
 
@@ -190,7 +190,7 @@
   global $user;
 
   if ($user->uid == 1 ||
-      (isset($_SESSION['subuser_uid']) && $uid == $_SESSION['subuser_uid']) ||
+      (!empty($_SESSION['subuser_uid']) && $uid == end($_SESSION['subuser_uid'])) ||
       db_result(db_query('SELECT uid FROM {user_relationship} WHERE uid = %d AND parent_id = %d', $uid, $user->uid))) {
     return TRUE;
   }
@@ -206,7 +206,16 @@
   global $user;
 
   if ($uid) {
-    $_SESSION['subuser_uid'] = ((isset($_SESSION['subuser_uid']) && $uid == $_SESSION['subuser_uid']) ? NULL : $user->uid);
+    if (!isset($_SESSION['subuser_uid'])) {
+        $_SESSION['subuser_uid'] = array();
+    }
+
+    if ($uid == end($_SESSION['subuser_uid'])) {
+        unset($_SESSION['subuser_uid'][key($_SESSION['subuser_uid'])]);
+    } else {
+        $_SESSION['subuser_uid'][] = $user->uid;
+    }
+
     $user = user_load($uid);
   }
   drupal_goto('user/' . $uid);
