Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.269 diff -u -p -r1.269 menu.inc --- includes/menu.inc 23 Apr 2008 20:01:47 -0000 1.269 +++ includes/menu.inc 2 May 2008 12:30:06 -0000 @@ -1658,7 +1658,6 @@ function menu_router_build($reset = FALS $menu = $cache->data; } else { - db_query('DELETE FROM {menu_router}'); // We need to manually call each module so that we can know which module // a given item came from. $callbacks = array(); @@ -1674,7 +1673,6 @@ function menu_router_build($reset = FALS // Alter the menu as defined in modules, keys are like user/%user. drupal_alter('menu', $callbacks); $menu = _menu_router_build($callbacks); - cache_set('router:', $menu, 'cache_menu'); } } return $menu; @@ -2254,6 +2252,15 @@ function _menu_router_build($callbacks) } array_multisort($sort, SORT_NUMERIC, $menu); + if ($menu) { + // Only delete the existing router if we have data to replace it. + db_query('DELETE FROM {menu_router}'); + } + else { + // We must have a serious error. + watchdog('php', 'Menu router rebuild faild - some paths may not work correctly.', array(), WATCHDOG_ERROR); + return array(); + } // Apply inheritance rules. foreach ($menu as $path => $v) { $item = &$menu[$path]; @@ -2356,6 +2363,7 @@ function _menu_router_build($callbacks) $masks = array_keys($masks); rsort($masks); variable_set('menu_masks', $masks); + cache_set('router:', $menu, 'cache_menu'); return $menu; }