Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.293
diff -u -p -r1.293 menu.inc
--- includes/menu.inc	8 Oct 2008 01:42:16 -0000	1.293
+++ includes/menu.inc	10 Oct 2008 02:21:37 -0000
@@ -172,6 +172,19 @@ define('MENU_DEFAULT_LOCAL_TASK', MENU_I
  */
 
 /**
+ * @name Menu (router) item flags
+ * @{
+ * Access callback placeholders for always or never allowing access.
+ */
+
+define('MENU_ACCESS_ALWAYS', '+');
+define('MENU_ACCESS_NEVER', '-');
+
+/**
+ * @} End of "Menu (router) item flags".
+ */
+
+/**
  * @name Menu status codes
  * @{
  * Status codes for menu callbacks.
@@ -490,8 +503,8 @@ function _menu_check_access(&$item, $map
   // user has access to this path.
   $callback = empty($item['access_callback']) ? 0 : trim($item['access_callback']);
   // Check for a TRUE or FALSE value.
-  if (is_numeric($callback)) {
-    $item['access'] = (bool)$callback;
+  if ($callback === MENU_ACCESS_ALWAYS || $callback === MENU_ACCESS_NEVER) {
+    $item['access'] = $callback == MENU_ACCESS_ALWAYS;
   }
   else {
     $arguments = menu_unserialize($item['access_arguments'], $map);
@@ -2390,16 +2403,12 @@ function _menu_router_build($callbacks) 
       // Default callback.
       $item['access callback'] = 'user_access';
     }
-    if (!isset($item['access callback']) || empty($item['page callback'])) {
-      $item['access callback'] = 0;
-    }
-    if (is_bool($item['access callback'])) {
-      $item['access callback'] = intval($item['access callback']);
+    if (!isset($item['access callback']) || empty($item['page callback']) || !is_string($item['access callback'])) {
+      $item['access callback'] = MENU_ACCESS_NEVER;
     }
 
     $item += array(
       'access arguments' => array(),
-      'access callback' => '',
       'page arguments' => array(),
       'page callback' => '',
       'block callback' => '',
