Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.414
diff -u -p -r1.414 menu.inc
--- includes/menu.inc	8 Oct 2010 05:07:53 -0000	1.414
+++ includes/menu.inc	19 Oct 2010 03:57:18 -0000
@@ -1666,7 +1666,13 @@ function menu_get_names() {
 }
 
 /**
- * Return an array containing the names of system-defined (default) menus.
+ * Returns an array containing the names of system-defined (default) menus.
+ *
+ * @return
+ *   An array whose keys are machine-readable names of the system-defined menus
+ *   and whose values are the default human-readable names of those menus. The
+ *   actual human-readable names displayed throughout the user interface may
+ *   differ, since modules (like Menu module) allow them to be overridden.
  */
 function menu_list_system_menus() {
   return array(
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.88
diff -u -p -r1.88 menu.admin.inc
--- modules/menu/menu.admin.inc	13 Oct 2010 13:43:21 -0000	1.88
+++ modules/menu/menu.admin.inc	19 Oct 2010 03:57:18 -0000
@@ -438,8 +438,6 @@ function menu_edit_menu($form, &$form_st
     '#title' => t('Title'),
     '#default_value' => $menu['title'],
     '#required' => TRUE,
-    // The title of a system menu cannot be altered.
-    '#access' => !isset($system_menus[$menu['menu_name']]),
   );
 
   $form['menu_name'] = array(
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.233
diff -u -p -r1.233 menu.module
--- modules/menu/menu.module	24 Sep 2010 00:37:43 -0000	1.233
+++ modules/menu/menu.module	19 Oct 2010 03:57:18 -0000
@@ -435,11 +435,12 @@ function menu_reset_item($link) {
  * Implements hook_block_info().
  */
 function menu_block_info() {
+  // Define blocks for user-added menus only; blocks for system menus are
+  // defined in the System module and altered in menu_block_info_alter().
   $menus = menu_get_menus(FALSE);
 
   $blocks = array();
   foreach ($menus as $name => $title) {
-    // Default "Navigation" block is handled by user.module.
     $blocks[$name]['info'] = check_plain($title);
     // Menu blocks can't be cached because each menu item can have
     // a custom access callback. menu.inc manages its own caching.
@@ -449,9 +450,25 @@ function menu_block_info() {
 }
 
 /**
+ * Implements hook_block_info_alter().
+ */
+function menu_block_info_alter(&$blocks, $theme, $code_blocks) {
+  // Replace the default administrative names of the system menu blocks with
+  // the ones that were entered via the Menu module administrative interface.
+  $menus = menu_get_menus();
+  foreach (array_keys(menu_list_system_menus()) as $name) {
+    if (isset($blocks['system'][$name]) && isset($menus[$name])) {
+      $blocks['system'][$name]['info'] = check_plain($menus[$name]);
+    }
+  }
+}
+
+/**
  * Implements hook_block_view().
  */
 function menu_block_view($delta = '') {
+  // Return data for user-added menus only; blocks for system menus are
+  // returned by the System module and altered in menu_block_view_alter().
   $menus = menu_get_menus(FALSE);
   $data['subject'] = check_plain($menus[$delta]);
   $data['content'] = menu_tree($delta);
@@ -466,10 +483,15 @@ function menu_block_view($delta = '') {
  * Implements hook_block_view_alter().
  */
 function menu_block_view_alter(&$data, $block) {
-  // Add contextual links for system menu blocks.
+  // Add contextual links for system menu blocks, and replace their titles with
+  // the ones that were entered via the Menu module administrative interface.
   if ($block->module == 'system' && !empty($data['content'])) {
     $system_menus = menu_list_system_menus();
     if (isset($system_menus[$block->delta])) {
+      $menus = menu_get_menus();
+      if (isset($menus[$block->delta])) {
+        $data['subject'] = check_plain($menus[$block->delta]);
+      }
       $data['content']['#contextual_links']['menu'] = array('admin/structure/menu/manage', array($block->delta));
     }
   }
Index: modules/menu/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.test,v
retrieving revision 1.42
diff -u -p -r1.42 menu.test
--- modules/menu/menu.test	13 Oct 2010 13:43:21 -0000	1.42
+++ modules/menu/menu.test	19 Oct 2010 03:57:18 -0000
@@ -81,6 +81,7 @@ class MenuTestCase extends DrupalWebTest
    */
   function doStandardMenuTests() {
     $this->doMenuTests();
+    $this->renameMenu();
     $this->addInvalidMenuLink();
   }
 
@@ -164,11 +165,7 @@ class MenuTestCase extends DrupalWebTest
 
     // Enable the custom menu block.
     $menu_name = 'menu-' . $menu_name; // Drupal prepends the name with 'menu-'.
-    $edit = array();
-    $edit['blocks[menu_' . $menu_name . '][region]'] = 'sidebar_first';
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
-    $this->assertResponse(200);
-    $this->assertText(t('The block settings have been updated.'), t('Custom menu block was enabled'));
+    $this->enableMenuBlock($menu_name);
 
     return menu_load($menu_name);
   }
@@ -193,6 +190,49 @@ class MenuTestCase extends DrupalWebTest
   }
 
   /**
+   * Enable the block associated with a menu.
+   *
+   * @param $menu_name
+   *   The machine-readable name of the menu.
+   * @param $module
+   *   The name of the module that provides the menu. Defaults to 'menu'.
+   * @param $region
+   *   The region to place the block within the site's default theme. If not
+   *   provided, 'sidebar_first' is used.
+   */
+  function enableMenuBlock($menu_name, $module = 'menu', $region = 'sidebar_first') {
+    $edit = array();
+    $edit['blocks[' . $module . '_' . $menu_name . '][region]'] = $region;
+    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->assertResponse(200);
+    $this->assertText(t('The block settings have been updated.'), t('Menu block was enabled.'));
+  }
+
+  /**
+   * Rename a menu's title through the administrative interface.
+   *
+   * @param $menu_name
+   *   The machine-readable name of the menu to edit. Defaults to 'navigation'.
+   * @param $module
+   *   The name of the module that provides the menu. Defaults to 'system'.
+   */
+  function renameMenu($menu_name = 'navigation', $module = 'system') {
+    // Rename the menu and ensure its new title appears on administrative
+    // screens.
+    $new_title = $this->randomName(16);
+    $edit = array('title' => $new_title);
+    $this->drupalPost('admin/structure/menu/manage/' . $menu_name . '/edit', $edit, t('Save'));
+    $this->assertUrl('admin/structure/menu/manage/' . $menu_name);
+    $this->assertRaw($new_title);
+
+    // Enable the associated menu block and ensure that its title displays
+    // correctly.
+    $this->enableMenuBlock($menu_name, $module);
+    $this->drupalGet('');
+    $this->assertText($new_title, 'Menu block displays with the correct title.');
+  }
+
+  /**
    * Test menu functionality using navigation menu.
    *
    */
