=== modified file 'includes/common.inc'
--- includes/common.inc	2010-07-01 00:46:57 +0000
+++ includes/common.inc	2010-07-01 06:44:02 +0000
@@ -2307,7 +2307,7 @@ function l($text, $path, array $options 
  * @see hook_page_delivery_callback_alter()
  */
 function drupal_deliver_page($page_callback_result, $default_delivery_callback = NULL) {
-  if (!isset($default_delivery_callback) && ($router_item = menu_get_item())) {
+  if (!isset($default_delivery_callback) && ($router_item = menu_get_item(NULL, NULL, 'deliver_callback'))) {
     $default_delivery_callback = $router_item['delivery_callback'];
   }
   $delivery_callback = !empty($default_delivery_callback) ? $default_delivery_callback : 'drupal_deliver_html_page';

=== modified file 'includes/menu.inc'
--- includes/menu.inc	2010-07-01 00:46:57 +0000
+++ includes/menu.inc	2010-07-01 06:45:15 +0000
@@ -385,6 +385,8 @@ function menu_set_item($path, $router_it
  *   node/% item and return that.
  * @param $router_item
  *   Internal use only.
+ * @param $key
+ *   Internal use only.
  *
  * @return
  *   The router item, an associate array corresponding to one row in the
@@ -394,8 +396,9 @@ function menu_set_item($path, $router_it
  *   theme_arguments will be filled in based on the database values and the
  *   objects loaded.
  */
-function menu_get_item($path = NULL, $router_item = NULL) {
+function menu_get_item($path = NULL, $router_item = NULL, $key = NULL) {
   $router_items = &drupal_static(__FUNCTION__);
+  $original_items = &$drupal_static(__FUNCTION__ . ':original');
   if (!isset($path)) {
     $path = $_GET['q'];
   }
@@ -420,19 +423,18 @@ function menu_get_item($path = NULL, $ro
     if ($router_item) {
       $map = _menu_translate($router_item, $original_map);
       $router_item['original_map'] = $original_map;
-      if ($map === FALSE) {
-        $router_items[$path] = FALSE;
-        return FALSE;
-      }
-      if ($router_item['access']) {
+      // Store and return a FALSE if loading the items failed.
+      $store = ($map === FALSE ? FALSE : $router_item);
+      if ($store && $router_item['access']) {
         $router_item['map'] = $map;
         $router_item['page_arguments'] = array_merge(menu_unserialize($router_item['page_arguments'], $map), array_slice($map, $router_item['number_parts']));
         $router_item['theme_arguments'] = array_merge(menu_unserialize($router_item['theme_arguments'], $map), array_slice($map, $router_item['number_parts']));
       }
     }
-    $router_items[$path] = $router_item;
+    $router_items[$path] = $store;
+    $original_items[$path] = $router_item;
   }
-  return $router_items[$path];
+  return isset($key) && isset($original_items[$path][$key]) ? $original_items[$path][$key] : $router_items[$path];
 }
 
 /**

