Index: bp-core/bp-core-filters.php
===================================================================
--- bp-core/bp-core-filters.php	(revision 5118)
+++ bp-core/bp-core-filters.php	(working copy)
@@ -292,7 +292,7 @@ function bp_modify_page_title( $title, $sep, $seplocation ) {
 	// An index or directory
 	} elseif ( bp_is_directory() ) {
 		if ( !bp_current_component() )
-			$title = sprintf( __( '%s Directory', 'buddypress' ), bp_get_name_from_root_slug( bp_members_slug() ) );
+			$title = sprintf( __( '%s Directory', 'buddypress' ), bp_get_name_from_root_slug( bp_get_members_root_slug() ) );
 		else
 			$title = sprintf( __( '%s Directory', 'buddypress' ), bp_get_name_from_root_slug() );
 
Index: bp-core/bp-core-template.php
===================================================================
--- bp-core/bp-core-template.php	(revision 5118)
+++ bp-core/bp-core-template.php	(working copy)
@@ -680,7 +680,7 @@ function bp_get_name_from_root_slug( $root_slug = '' ) {
 
 	// If no slug is passed, look at current_component
 	if ( empty( $root_slug ) )
-		$root_slug = $bp->current_component;
+		$root_slug = $bp->{$bp->current_component}->root_slug;
 
 	// No current component or root slug, so flee
 	if ( empty( $root_slug ) )
@@ -690,8 +690,9 @@ function bp_get_name_from_root_slug( $root_slug = '' ) {
 	foreach ( $bp->active_components as $component => $id )
 		if (	isset( $bp->{$component}->root_slug ) &&
 				!empty( $bp->{$component}->root_slug ) &&
-				$bp->{$component}->root_slug == $root_slug )
+				$bp->{$component}->root_slug == $root_slug ) {
 			return $bp->{$component}->name;
+		}
 
 	return false;
 }
@@ -748,41 +749,12 @@ function bp_is_current_component( $component ) {
 		$component = 'profile';
 
 	if ( !empty( $bp->current_component ) ) {
-		// First, check to see whether $component_name and the current
-		// component are a simple match
-		if ( $bp->current_component == $component ) {
-			$is_current_component = true;
+		if ( isset( $bp->{$bp->current_component} ) && isset( $bp->{$component} ) ) {
+			$current_slug = isset( $bp->{$bp->current_component}->root_slug ) ? $bp->{$bp->current_component}->root_slug : $bp->{$bp->current_component}->slug;
 
-		// Since the current component is based on the visible URL slug let's
-		// check the component being passed and see if its root_slug matches
-		} elseif ( isset( $bp->{$component}->root_slug ) && $bp->{$component}->root_slug == $bp->current_component ) {
-			$is_current_component = true;
-
-		// Because slugs can differ from root_slugs, we should check them too
-		} elseif ( isset( $bp->{$component}->slug ) && $bp->{$component}->slug == $bp->current_component ) {
-			$is_current_component = true;
+			$component_slug = isset( $bp->{$component}->root_slug ) ? $bp->{$component}->root_slug : $bp->{$component}->slug;
 
-		// Next, check to see whether $component is a canonical,
-		// non-translatable component name. If so, we can return its
-		// corresponding slug from $bp->active_components.
-		} else if ( $key = array_search( $component, $bp->active_components ) ) {
-			if ( strstr( $bp->current_component, $key ) )
-				$is_current_component = true;
-
-		// If we haven't found a match yet, check against the root_slugs
-		// created by $bp->pages, as well as the regular slugs
-		} else {
-			foreach ( $bp->active_components as $id ) {
-				// If the $component parameter does not match the current_component,
-				// then move along, these are not the droids you are looking for
-				if ( empty( $bp->{$id}->root_slug ) || $bp->{$id}->root_slug != $bp->current_component )
-					continue;
-
-				if ( $id == $component ) {
-					$is_current_component = true;
-					break;
-				}
-			}
+			return $current_slug == $component_slug;
 		}
 
 	// Page template fallback check if $bp->current_component is empty
