Index: masquerade.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/masquerade/masquerade.module,v
retrieving revision 1.39
diff -u -p -r1.39 masquerade.module
--- masquerade.module	19 Dec 2010 00:19:14 -0000	1.39
+++ masquerade.module	21 Dec 2010 07:08:09 -0000
@@ -149,7 +149,7 @@ function masquerade_menu() {
 }
 
 /**
- * Implements hook_menu_link_alter().
+ * Implements hook_menu_alter().
  *
  * We need to add a token to the Masquerade paths to protect against CSRF
  * attacks. Since menu items in Drupal do not support dynamic elements these
@@ -157,10 +157,13 @@ function masquerade_menu() {
  * Set the 'alter'-option to TRUE to make sure
  * the links get passed through masquerade_translated_menu_link_alter.
  */
-function masquerade_menu_link_alter(&$item) {
-  if (($item['page callback'] == 'masquerade_switch_user_page') || ($item['page callback'] == 'masquerade_switch_back_page')) {
-    $item['options']['alter'] = TRUE;
+function masquerade_menu_alter(&$items) {
+  $default_test_user = _masquerade_user_load(variable_get('masquerade_test_user', ''));
+  if ($default_test_user && ($default_test_user->uid || $default_test_user->name == variable_get('anonymous', t('Anonymous')))) {
+    $items['masquerade/switch/' . $default_test_user->uid]['options']['alter'] = TRUE;
   }
+  $items['masquerade/switch/%']['options']['alter'] = TRUE;
+  $items['masquerade/unswitch']['options']['alter'] = TRUE;
 }
 
 /**
