diff --git includes/menu.inc includes/menu.inc
index 382f02c..86e45c2 100644
--- includes/menu.inc
+++ includes/menu.inc
@@ -2424,28 +2424,15 @@ function menu_get_active_breadcrumb() {
     // Allow modules to alter the breadcrumb, if possible, as that is much
     // faster than rebuilding an entirely new active trail.
     drupal_alter('menu_breadcrumb', $active_trail, $item);
-
-    // Don't show a link to the current page in the breadcrumb trail.
-    $end = end($active_trail);
-    if ($item['href'] == $end['href']) {
-      array_pop($active_trail);
-    }
-
-    // Remove the tab root (parent) if the current path links to its parent.
-    // Normally, the tab root link is included in the breadcrumb, as soon as we
-    // are on a local task or any other child link. However, if we are on a
-    // default local task (e.g., node/%/view), then we do not want the tab root
-    // link (e.g., node/%) to appear, as it would be identical to the current
-    // page. Since this behavior also needs to work recursively (i.e., on
-    // default local tasks of default local tasks), and since the last non-task
-    // link in the trail is used as page title (see menu_get_active_title()),
-    // this condition cannot be cleanly integrated into menu_get_active_trail().
-    // menu_get_active_trail() already skips all links that link to their parent
-    // (commonly MENU_DEFAULT_LOCAL_TASK). In order to also hide the parent link
-    // itself, we always remove the last link in the trail, if the current
-    // router item links to its parent.
-    if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
-      array_pop($active_trail);
+    
+    // Remove breadcrumbs that link to current page or tabs.
+    foreach ($active_trail as $key => $trail_item) {
+      if ($item['tab_root_href'] == $trail_item['href']) {
+        $delete = TRUE;
+      }
+      if (isset($delete)) {
+        unset($active_trail[$key]);
+      }
     }
 
     foreach ($active_trail as $parent) {
diff --git modules/simpletest/tests/menu.test modules/simpletest/tests/menu.test
index f46b81d..5b0c1f5 100644
--- modules/simpletest/tests/menu.test
+++ modules/simpletest/tests/menu.test
@@ -858,15 +858,9 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks', $trail, $title, $tree);
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/first', $trail, $title, $tree);
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/first/first', $trail, $title, $tree);
-    $trail += array(
-      'menu-test/breadcrumb/tasks' => t('Breadcrumbs test: Local tasks'),
-    );
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/first/second', $trail, $title, $tree);
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/second', $trail, $title, $tree);
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/second/first', $trail, $title, $tree);
-    $trail += array(
-      'menu-test/breadcrumb/tasks/second' => t('Second'),
-    );
     $this->assertBreadcrumb('menu-test/breadcrumb/tasks/second/second', $trail, $title, $tree);
 
     // Verify Taxonomy administration breadcrumbs.
@@ -879,9 +873,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
       'admin/structure/taxonomy' => t('Taxonomy'),
     );
     $this->assertBreadcrumb('admin/structure/taxonomy/tags', $trail);
-    $trail += array(
-      'admin/structure/taxonomy/tags' => t('Tags'),
-    );
     $this->assertBreadcrumb('admin/structure/taxonomy/tags/edit', $trail);
     $this->assertBreadcrumb('admin/structure/taxonomy/tags/fields', $trail);
     $this->assertBreadcrumb('admin/structure/taxonomy/tags/add', $trail);
@@ -896,40 +887,37 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
       'admin/structure/menu' => t('Menus'),
     );
     $this->assertBreadcrumb('admin/structure/menu/manage/navigation', $trail);
-    $trail += array(
-      'admin/structure/menu/manage/navigation' => t('Navigation'),
-    );
     $this->assertBreadcrumb('admin/structure/menu/manage/navigation/edit', $trail);
     $this->assertBreadcrumb('admin/structure/menu/manage/navigation/add', $trail);
 
     // Verify Node administration breadcrumbs.
     $trail = $admin + array(
       'admin/structure' => t('Structure'),
-      'admin/structure/types' => t('Content types'),
     );
     $this->assertBreadcrumb('admin/structure/types/add', $trail);
-    $this->assertBreadcrumb("admin/structure/types/manage/$type", $trail);
-    $trail += array(
-      "admin/structure/types/manage/$type" => t('Article'),
+    $trail = $admin + array(
+      'admin/structure' => t('Structure'),
+      'admin/structure/types' => t('Content types'),
     );
+    $this->assertBreadcrumb("admin/structure/types/manage/$type", $trail);
     $this->assertBreadcrumb("admin/structure/types/manage/$type/fields", $trail);
     $this->assertBreadcrumb("admin/structure/types/manage/$type/display", $trail);
-    $trail_teaser = $trail + array(
-      "admin/structure/types/manage/$type/display" => t('Manage display'),
-    );
-    $this->assertBreadcrumb("admin/structure/types/manage/$type/display/teaser", $trail_teaser);
+    $this->assertBreadcrumb("admin/structure/types/manage/$type/display/teaser", $trail);
     $this->assertBreadcrumb("admin/structure/types/manage/$type/comment/fields", $trail);
     $this->assertBreadcrumb("admin/structure/types/manage/$type/comment/display", $trail);
+    
+    $trail += array(
+      "admin/structure/types/manage/$type" => t('Article'),
+    );
     $this->assertBreadcrumb("admin/structure/types/manage/$type/delete", $trail);
+
     $trail += array(
       "admin/structure/types/manage/$type/fields" => t('Manage fields'),
     );
     $this->assertBreadcrumb("admin/structure/types/manage/$type/fields/body", $trail);
-    $trail += array(
-      "admin/structure/types/manage/$type/fields/body" => t('Body'),
-    );
     $this->assertBreadcrumb("admin/structure/types/manage/$type/fields/body/widget-type", $trail);
 
+    
     // Verify Filter text format administration breadcrumbs.
     $format = db_query_range("SELECT format, name FROM {filter_format}", 1, 1)->fetch();
     $format_id = $format->format;
@@ -938,10 +926,10 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     );
     $this->assertBreadcrumb('admin/config/content/formats', $trail);
 
+    $this->assertBreadcrumb('admin/config/content/formats/add', $trail);
     $trail += array(
       'admin/config/content/formats' => t('Text formats'),
     );
-    $this->assertBreadcrumb('admin/config/content/formats/add', $trail);
     $this->assertBreadcrumb("admin/config/content/formats/$format_id", $trail);
     $trail += array(
       "admin/config/content/formats/$format_id" => $format->name,
@@ -961,9 +949,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     // Also verify that the node does not appear elsewhere (e.g., menu trees).
     $this->assertNoLink($node1->title);
 
-    $trail += array(
-      "node/$nid1" => $node1->title,
-    );
     $this->assertBreadcrumb("node/$nid1/edit", $trail);
 
     // Verify that breadcrumb on node listing page contains "Home" only.
@@ -1004,10 +989,10 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
       // The node itself should not be contained in the breadcrumb on the
       // default local task, since there is no difference between both pages.
       $this->assertBreadcrumb("node/$nid2/view", $trail, $node2->title, $tree);
+      $this->assertBreadcrumb("node/$nid2/edit", $trail);
       $trail += array(
         "node/$nid2" => $node2->menu['link_title'],
       );
-      $this->assertBreadcrumb("node/$nid2/edit", $trail);
 
       // Create a child node in the current menu.
       $title = $this->randomName();
@@ -1028,12 +1013,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
       // The node itself should not be contained in the breadcrumb on the
       // default local task, since there is no difference between both pages.
       $this->assertBreadcrumb("node/$nid3/view", $trail, $node3->title, $tree, FALSE);
-      $trail += array(
-        "node/$nid3" => $node3->menu['link_title'],
-      );
-      $tree += array(
-        "node/$nid3" => $node3->menu['link_title'],
-      );
       $this->assertBreadcrumb("node/$nid3/edit", $trail);
 
       // Verify that node listing page still contains "Home" only.
@@ -1172,9 +1151,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     $trail = $home;
     $this->assertBreadcrumb('user', $trail, $this->admin_user->name);
     $this->assertBreadcrumb('user/' . $this->admin_user->uid, $trail, $this->admin_user->name);
-    $trail += array(
-      'user/' . $this->admin_user->uid => $this->admin_user->name,
-    );
     $this->assertBreadcrumb('user/' . $this->admin_user->uid . '/edit', $trail, $this->admin_user->name);
 
     // Create a second user to verify breadcrumb on user pages again.
@@ -1188,18 +1164,12 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     // (without menu link).
     $trail = $home;
     $this->assertBreadcrumb('user/' . $this->admin_user->uid, $trail, $this->admin_user->name);
-    $trail += array(
-      'user/' . $this->admin_user->uid => $this->admin_user->name,
-    );
     $this->assertBreadcrumb('user/' . $this->admin_user->uid . '/edit', $trail, $this->admin_user->name);
 
     // Verify correct breadcrumb and page title when viewing own user account
     // pages (without menu link).
     $trail = $home;
     $this->assertBreadcrumb('user/' . $this->web_user->uid, $trail, $this->web_user->name);
-    $trail += array(
-      'user/' . $this->web_user->uid => $this->web_user->name,
-    );
     $this->assertBreadcrumb('user/' . $this->web_user->uid . '/edit', $trail, $this->web_user->name);
 
     // Add a Navigation menu links for 'user' and $this->admin_user.
@@ -1239,9 +1209,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     $this->assertBreadcrumb('user/' . $this->admin_user->uid, $trail, $link_admin_user['link_title'], $tree);
 
     $this->drupalLogin($this->admin_user);
-    $trail += array(
-      $link_admin_user['link_path'] => $link_admin_user['link_title'],
-    );
     $this->assertBreadcrumb('user/' . $this->admin_user->uid . '/edit', $trail, $link_admin_user['link_title'], $tree, FALSE);
 
     // Move 'user/%' below 'user' and verify again.
@@ -1265,9 +1232,6 @@ class MenuBreadcrumbTestCase extends DrupalWebTestCase {
     $this->assertBreadcrumb('user/' . $this->admin_user->uid, $trail, $link_admin_user['link_title'], $tree);
 
     $this->drupalLogin($this->admin_user);
-    $trail += array(
-      $link_admin_user['link_path'] => $link_admin_user['link_title'],
-    );
     $this->assertBreadcrumb('user/' . $this->admin_user->uid . '/edit', $trail, $link_admin_user['link_title'], $tree, FALSE);
 
     // Create an only slightly privileged user being able to access site reports
