=== modified file 'includes/menu.inc'
--- includes/menu.inc	2009-12-03 20:21:50 +0000
+++ includes/menu.inc	2009-12-04 17:04:44 +0000
@@ -624,6 +624,11 @@ function _menu_item_localize(&$item, $ma
   // If we are translating a router item (tabs, page, breadcrumb), then we
   // can always use the information from the router item.
   if (!$link_translate || ($item['title'] == $item['link_title'])) {
+    // PASS_THROUGH is encoded by adding a - prefix.
+    if ($callback && $callback[0] == '-') {
+      $callback = substr($callback, 1);
+      $item[PASS_THROUGH] = TRUE;
+    }
     // t() is a special case. Since it is used very close to all the time,
     // we handle it directly instead of using indirect, slower methods.
     if ($callback == 't') {
@@ -2156,7 +2161,7 @@ function menu_get_active_title() {
 
   foreach (array_reverse($active_trail) as $item) {
     if (!(bool)($item['type'] & MENU_IS_LOCAL_TASK)) {
-      return $item['title'];
+      return !empty($item[PASS_THROUGH]) ? $item['title'] : check_plain($item['title']);
     }
   }
 }
@@ -3160,6 +3165,12 @@ function _menu_router_build($callbacks) 
       'include file' => '',
       'module' => '',
     );
+    if (!empty($item[PASS_THROUGH])) {
+      // Make a note of PASS_THROUGH by storing an otherwise invalid title
+      // callback.
+      $item['title callback'] = '-' . $item['title callback'];
+    }
+    
 
     // Calculate out the file to be included for each callback, if any.
     if ($item['file']) {

=== modified file 'includes/path.inc'
--- includes/path.inc	2009-12-02 19:26:21 +0000
+++ includes/path.inc	2009-12-04 08:56:14 +0000
@@ -289,7 +289,7 @@ function drupal_get_title() {
 
   // During a bootstrap, menu.inc is not included and thus we cannot provide a title.
   if (!isset($title) && function_exists('menu_get_active_title')) {
-    $title = check_plain(menu_get_active_title());
+    $title = menu_get_active_title();
   }
 
   return $title;

=== modified file 'modules/simpletest/tests/menu.test'
--- modules/simpletest/tests/menu.test	2009-12-01 15:57:40 +0000
+++ modules/simpletest/tests/menu.test	2009-12-04 09:01:33 +0000
@@ -240,6 +240,16 @@ class MenuIncTestCase extends DrupalWebT
     $this->assertEqual(menu_test_static_variable(), 'delete', t('hook_menu_link_delete() fired correctly'));
   }
 
+  /**
+   * Test title pass through.
+   */
+  function testMenuTitlePassThrough() {
+    $this->drupalGet('menu-test/passthrough');
+    $title = '<span>test</span>';
+    $this->assertRaw($title);
+    $this->assertNoRaw(check_plain($title));
+  }
+
 }
 
 /**

=== modified file 'modules/simpletest/tests/menu_test.module'
--- modules/simpletest/tests/menu_test.module	2009-11-10 17:27:53 +0000
+++ modules/simpletest/tests/menu_test.module	2009-12-04 09:20:11 +0000
@@ -58,6 +58,14 @@ function menu_test_menu() {
     'page arguments' => array(TRUE),
     'access arguments' => array('access content'),
   );
+  // Title pass through.
+  $items['menu-test/passthrough'] = array(
+    'title' => '<span>test</span>',
+    PASS_THROUGH => TRUE,
+    'page callback' => 'menu_test_passthrough',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
   return $items;
 }
 
@@ -183,3 +191,10 @@ function menu_test_static_variable($valu
   }
   return $variable;
 }
+
+/**
+ * Empty menu callback.
+ */
+function menu_test_passthrough() {
+  return '&nbsp;';
+}

