Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.76
diff -u -F^function -r1.76 menu.inc
--- includes/menu.inc	22 Jan 2005 09:10:59 -0000	1.76
+++ includes/menu.inc	27 Jan 2005 17:32:49 -0000
@@ -491,11 +491,16 @@ function menu_in_active_trail($mid) {
  *
  * This need only be called at the start of pages that modify the menu.
  */
-function menu_rebuild() {
-  // Clear the page cache, so that changed menus are reflected for anonymous users.
-  cache_clear_all();
-  // Also clear the menu cache.
-  cache_clear_all('menu:', TRUE);
+function menu_rebuild($uid = 0) {
+  if ($uid == 0) {
+    // Clear the page cache, so that changed menus are reflected for anonymous users.
+    cache_clear_all();
+    // Also clear the menu cache.
+    cache_clear_all('menu:', TRUE);
+  }
+  else {
+    cache_clear_all('menu:'. $uid, TRUE);
+  }
 
   _menu_build();
 
Index: modules/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user.module,v
retrieving revision 1.433
diff -u -F^function -r1.433 user.module
--- modules/user.module	25 Jan 2005 20:27:09 -0000	1.433
+++ modules/user.module	27 Jan 2005 17:32:50 -0000
@@ -197,6 +197,8 @@ function user_save($account, $array = ar
   if ($authmaps) {
     user_set_authmaps($user, $authmaps);
   }
+  // Rebuild this user's menu to account for possibly changed permissions.
+  menu_rebuild($user->uid);
 
   return $user;
 }
