Index: nav-menu-template.php
===================================================================
--- nav-menu-template.php	(revision 33092)
+++ nav-menu-template.php	(working copy)
@@ -524,13 +524,21 @@
 		) {
 			$classes[] = 'current-menu-item';
 			$menu_items[$key]->current = true;
-			$_anc_id = (int) $menu_item->db_id;
+			$_anc_id = (int) $menu_item->menu_item_parent;
 
 			while(
-				( $_anc_id = get_post_meta( $_anc_id, '_menu_item_menu_item_parent', true ) ) &&
 				! in_array( $_anc_id, $active_ancestor_item_ids )
 			) {
 				$active_ancestor_item_ids[] = $_anc_id;
+				
+				// Find next ancestor in the hierarchy in the $menu_items
+				foreach ((array) $menu_items as $key => $parent)
+				{
+					if ($parent->db_id == $_anc_id)
+					{
+						$_anc_id = $parent->menu_item_parent;
+					}
+				}
 			}
 
 			if ( 'post_type' == $menu_item->type && 'page' == $menu_item->object ) {
@@ -554,13 +562,21 @@
 			if ( $raw_item_url && in_array( $item_url, array( $current_url, $_indexless_current, $_root_relative_current ) ) ) {
 				$classes[] = 'current-menu-item';
 				$menu_items[$key]->current = true;
-				$_anc_id = (int) $menu_item->db_id;
+				$_anc_id = (int) $menu_item->menu_item_parent;
 
 				while(
-					( $_anc_id = get_post_meta( $_anc_id, '_menu_item_menu_item_parent', true ) ) &&
 					! in_array( $_anc_id, $active_ancestor_item_ids )
 				) {
 					$active_ancestor_item_ids[] = $_anc_id;
+											
+					// Find next ancestor in the hierarchy in the $menu_items
+					foreach ((array) $menu_items as $key => $parent)
+					{
+						if ($parent->db_id == $_anc_id)
+						{
+							$_anc_id = $parent->menu_item_parent;
+						}
+					}
 				}
 
 				if ( in_array( home_url(), array( untrailingslashit( $current_url ), untrailingslashit( $_indexless_current ) ) ) ) {
