Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.378
diff -u -p -r1.378 menu.inc
--- includes/menu.inc	30 Jan 2010 03:38:22 -0000	1.378
+++ includes/menu.inc	16 Feb 2010 12:21:13 -0000
@@ -2194,7 +2194,33 @@ function menu_link_load($mlid) {
     $query = db_select('menu_links', 'ml');
     $query->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
     $query->fields('ml');
-    $query->fields('m');
+    // SELECT just the neccessary columns from {menu_router}.
+    // Weight should be taken from {menu_links}, not {menu_router}.
+    $query->fields('m', array(
+      'path',
+      'load_functions',
+      'to_arg_functions',
+      'access_callback',
+      'access_arguments',
+      'page_callback',
+      'page_arguments',
+      'delivery_callback',
+      'fit',
+      'number_parts',
+      'context',
+      'tab_parent',
+      'tab_root',
+      'title',
+      'title_callback',
+      'title_arguments',
+      'theme_callback',
+      'theme_arguments',
+      'type',
+      'block_callback',
+      'description',
+      'position',
+      'file',
+    ));
     $query->condition('ml.mlid', $mlid);
     if ($item = $query->execute()->fetchAssoc()) {
       _menu_link_translate($item);
Index: modules/menu/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.test,v
retrieving revision 1.32
diff -u -p -r1.32 menu.test
--- modules/menu/menu.test	7 Feb 2010 17:29:09 -0000	1.32
+++ modules/menu/menu.test	16 Feb 2010 12:21:13 -0000
@@ -579,12 +579,16 @@ class MenuNodeTestCase extends DrupalWeb
     $edit = array(
       'menu[enabled]' => 1,
       'menu[link_title]' => $node_title,
+      'menu[weight]' => 17,
     );
     $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
     // Assert that the link exists.
     $this->drupalGet('');
     $this->assertLink($node_title);
 
+    $this->drupalGet('node/' . $node->nid . '/edit');
+    $this->assertOptionSelected('edit-menu-weight', 17, t('Menu weight correct in edit form'));
+
     // Edit the node and remove the menu link.
     $edit = array(
       'menu[enabled]' => FALSE,
@@ -595,4 +599,3 @@ class MenuNodeTestCase extends DrupalWeb
     $this->assertNoLink($node_title);
   }
 }
-
