diff -urpN drupal-7.x-dev.legacy/includes/menu.inc drupal-7.x-dev/includes/menu.inc
--- drupal-7.x-dev.legacy/includes/menu.inc	2008-11-17 16:00:41.000000000 +0800
+++ drupal-7.x-dev/includes/menu.inc	2008-11-17 16:00:49.000000000 +0800
@@ -850,7 +850,7 @@ function menu_tree_all_data($menu_name =
     // If the tree data was not in the cache, $data will be NULL.
     if (!isset($data)) {
       // Build and run the query, and build the tree.
-      $query = db_select('menu_links', 'ml', array('fetch' => PDO::FETCH_ASSOC));
+      $query = db_select('menu_links', 'ml');
       $query->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
       $query->fields('ml');
       $query->fields('m', array(
@@ -1020,7 +1020,7 @@ function menu_tree_page_data($menu_name 
         // Select the links from the table, and recursively build the tree. We
         // LEFT JOIN since there is no match in {menu_router} for an external
         // link.
-        $query = db_select('menu_links', 'ml', array('fetch' => PDO::FETCH_ASSOC));
+        $query = db_select('menu_links', 'ml');
         $query->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
         $query->fields('ml');
         $query->fields('m', array(
@@ -1921,7 +1921,7 @@ function _menu_navigation_links_rebuild(
     }
   }
   // Find any item whose router path does not exist any more.
-  $result = db_select('menu_links', NULL, array('fetch' => PDO::FETCH_ASSOC))
+  $result = db_select('menu_links')
     ->fields('menu_links')
     ->condition('router_path', $paths, 'NOT IN')
     ->condition('external', 0)
@@ -1946,10 +1946,10 @@ function _menu_navigation_links_rebuild(
  */
 function menu_link_delete($mlid, $path = NULL) {
   if (isset($mlid)) {
-    _menu_delete_item(db_query("SELECT * FROM {menu_links} WHERE mlid = :mlid", array(':mlid' => $mlid), array('fetch' => PDO::FETCH_ASSOC))->fetchAssoc());
+    _menu_delete_item(db_query("SELECT * FROM {menu_links} WHERE mlid = :mlid", array(':mlid' => $mlid))->fetchAssoc());
   }
   else {
-    $result = db_query("SELECT * FROM {menu_links} WHERE link_path = :link_path", array(':link_path' => $path), array('fetch' => PDO::FETCH_ASSOC));
+    $result = db_query("SELECT * FROM {menu_links} WHERE link_path = :link_path", array(':link_path' => $path));
     foreach ($result as $link) {
       _menu_delete_item($link);
     }
@@ -1965,6 +1965,7 @@ function menu_link_delete($mlid, $path =
  *   Forces deletion. Internal use only, setting to TRUE is discouraged.
  */
 function _menu_delete_item($item, $force = FALSE) {
+  $item = is_object($item) ? get_object_vars($item) : $item;
   if ($item && ($item['module'] != 'system' || $item['updated'] || $force)) {
     // Children get re-attached to the item's parent.
     if ($item['has_children']) {
diff -urpN drupal-7.x-dev.legacy/modules/forum/forum.test drupal-7.x-dev/modules/forum/forum.test
--- drupal-7.x-dev.legacy/modules/forum/forum.test	2008-11-17 15:56:44.000000000 +0800
+++ drupal-7.x-dev/modules/forum/forum.test	2008-11-17 16:00:49.000000000 +0800
@@ -96,7 +96,6 @@ class ForumTestCase extends DrupalWebTes
 
     // Add forum to navigation menu.
     $edit = array();
-    $edit['mlid:' . $mlid . '[hidden]'] = TRUE;
     $this->drupalPost('admin/build/menu-customize/navigation', $edit, t('Save configuration'));
     $this->assertResponse(200);
 
