diff --git wp-admin/includes/nav-menu.php wp-admin/includes/nav-menu.php
index 6e92928..bd1064a 100644
--- wp-admin/includes/nav-menu.php
+++ wp-admin/includes/nav-menu.php
@@ -54,6 +54,8 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  {
 		$original_title = '';
 		if ( 'taxonomy' == $item->type ) {
 			$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
+			if ( is_wp_error( $original_title ) )
+				$original_title = $original_title->get_error_message();
 		} elseif ( 'post_type' == $item->type ) {
 			$original_object = get_post( $item->object_id );
 			$original_title = $original_object->post_title;
@@ -1073,13 +1075,18 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
 			return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named <strong>%s</strong> does not exist.'), $walker_class_name ) );
 
 		$some_pending_menu_items = false;
+		$invalid_items = false;
 		foreach( (array) $menu_items as $menu_item ) {
-			if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status )
+			if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) {
 				$some_pending_menu_items = true;
+				
+				if ( ( $menu_item->type == 'post_type' && ! post_type_exists( $menu_item->object ) ) || ( ( $menu_item->type == 'taxonomy' ) && ! taxonomy_exists( $menu_item->object ) ) )
+					$invalid_items = true;
+			}
 		}
 
 		if ( $some_pending_menu_items )
-			$result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . '</p></div>';
+			$result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . ( $invalid_items ? '<br />' . __( 'However, menu items associated with invalid post types or taxonomies will not be made public.' ) : '' ) . '</p></div>';
 
 		$result .= '<ul class="menu" id="menu-to-edit"> ';
 		$result .= walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker ) );
diff --git wp-admin/nav-menus.php wp-admin/nav-menus.php
index 1e39805..11117cb 100644
--- wp-admin/nav-menus.php
+++ wp-admin/nav-menus.php
@@ -301,7 +301,6 @@ switch ( $action ) {
 
 		// update existing menu
 		} else {
-
 			$_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
 
 			$menu_title = trim( esc_html( $_POST['menu-name'] ) );
diff --git wp-includes/nav-menu.php wp-includes/nav-menu.php
index e1af8f7..4930125 100644
--- wp-includes/nav-menu.php
+++ wp-includes/nav-menu.php
@@ -324,7 +324,6 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
 			$original_parent = get_term_field( 'parent', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
 			$original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
 		} elseif ( 'post_type' == $args['menu-item-type'] ) {
-
 			$original_object = get_post( $args['menu-item-object-id'] );
 			$original_parent = (int) $original_object->post_parent;
 			$original_title = $original_object->post_title;
@@ -512,6 +511,9 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
 	}
 
 	$items = array_map( 'wp_setup_nav_menu_item', $items );
+	
+	if ( ! in_array( $args['post_status'], array( 'draft', 'any' ) ) )
+		$items = array_filter( $items, create_function( '$item', 'return $item->post_status != "draft";' ) );
 
 	if ( ARRAY_A == $args['output'] ) {
 		$GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
@@ -560,22 +562,31 @@ function wp_setup_nav_menu_item( $menu_item ) {
 
 			if ( 'post_type' == $menu_item->type ) {
 				$object = get_post_type_object( $menu_item->object );
-				$menu_item->type_label = $object->labels->singular_name;
-				$menu_item->url = get_permalink( $menu_item->object_id );
-
+				if ( empty( $object ) ) {
+					$menu_item->type_label = __( 'Invalid post type' );
+					$menu_item->url = '';
+					$menu_item->post_status = 'draft';
+				} else {
+					$menu_item->type_label = $object->labels->singular_name;
+					$menu_item->url = get_permalink( $menu_item->object_id );
+				}
 				$original_object = get_post( $menu_item->object_id );
 				$original_title = $original_object->post_title;
 				$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
-
 			} elseif ( 'taxonomy' == $menu_item->type ) {
 				$object = get_taxonomy( $menu_item->object );
-				$menu_item->type_label = $object->labels->singular_name;
+				$original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
+				if ( empty( $object ) || is_wp_error( $original_title ) ) {
+					$menu_item->type_label = __( 'Invalid Taxonomy' );
+					$menu_item->title = '';
+					$menu_item->post_status = 'draft';
+				} else {
+					$menu_item->type_label = $object->labels->singular_name;
+					$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
+				}
+				
 				$term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
 				$menu_item->url = !is_wp_error( $term_url ) ? $term_url : '';
-
-				$original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
-				$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
-
 			} else {
 				$menu_item->type_label = __('Custom');
 				$menu_item->title = $menu_item->post_title;
