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 13:22:29 -0000
@@ -2194,7 +2194,8 @@ 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');
+    // Weight should be taken from {menu_links}, not {menu_router}.
+    $query->fields('m', array_diff(drupal_schema_fields_sql('menu_router'), array('weight')));
     $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 13:22:29 -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);
   }
 }
-
