cvs diff -u (in directory C:\CVS\drupal)
cvs diff: Diffing .
cvs diff: Diffing database
cvs diff: Diffing includes
Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.80
diff -u -r1.80 menu.inc
--- includes/menu.inc	24 Apr 2005 16:34:32 -0000	1.80
+++ includes/menu.inc	1 Jun 2005 00:39:44 -0000
@@ -491,8 +491,19 @@
  * Populate the database representation of the menu.
  *
  * This need only be called at the start of pages that modify the menu.
- */
-function menu_rebuild() {
+ *
+ * @param $uid
+ *   If specified, only rebuild the menu for a particular user, for example when
+ *   their roles change.
+ */
+function menu_rebuild($uid = NULL) {
+  // If only clearing for a particular user, we don't need to rebuild the actual
+  // menu tree.
+  if ($uid !== NULL) {
+    cache_clear_all('menu:'. $uid .':', TRUE);
+    return;
+  }
+
   // Clear the page cache, so that changed menus are reflected for anonymous users.
   cache_clear_all();
   // Also clear the menu cache.
cvs diff: Diffing misc
cvs diff: Diffing modules
Index: modules/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user.module,v
retrieving revision 1.477
diff -u -r1.477 user.module
--- modules/user.module	26 May 2005 19:03:05 -0000	1.477
+++ modules/user.module	1 Jun 2005 00:39:52 -0000
@@ -202,6 +202,8 @@
     user_set_authmaps($user, $authmaps);
   }
 
+  // Clear menu cache for this user
+  menu_rebuild($user->uid);
   return $user;
 }
 

