Index: wp-admin/includes/class-wp-upgrader.php
===================================================================
--- wp-admin/includes/class-wp-upgrader.php	(revision 22730)
+++ wp-admin/includes/class-wp-upgrader.php	(working copy)
@@ -671,6 +671,10 @@
 		/* translators: 1: theme name, 2: version */
 		$this->strings['parent_theme_currently_installed'] = __('The parent theme, <strong>%1$s %2$s</strong>, is currently installed.');
 		/* translators: 1: theme name, 2: version */
+		$this->strings['parent_theme_invalid'] = __( '<strong>%1$s %2$s</strong>, is currently installed, but it is not a valid parent theme for <strong>%3$s %4$s</strong>.' );
+		/* translators: 1: theme name, 2: version */
+		$this->strings['theme_broken'] = __( '<strong>%1$s %2$s</strong> is installed but &#8220;broken&#8221; and cannot be used.' );
+		/* translators: 1: theme name, 2: version */
 		$this->strings['parent_theme_install_success'] = __('Successfully installed the parent theme, <strong>%1$s %2$s</strong>.');
 		$this->strings['parent_theme_not_found'] = __('<strong>The parent theme could not be found.</strong> You will need to install the parent theme, <strong>%s</strong>, before you can use this child theme.');
 	}
@@ -684,8 +688,23 @@
 
 		$this->skin->feedback( 'parent_theme_search' );
 
-		if ( ! $theme_info->parent()->errors() ) {
+		if ( $theme_info->parent()->exists() ) {
+			// But, this installed parent theme is not a valid parent of the theme we're trying to install.
+			// (We assume later on that any theme we install now from WordPress.org *is* a valid parent theme.)
+			if ( $theme_info->errors() && in_array( 'theme_parent_invalid', $theme_info->errors()->get_error_codes() ) ) {
+				$name = $theme_info->display('Name');
+				$version = $theme_info->display('Version');
+
+				$this->skin->feedback( 'parent_theme_invalid', $theme_info->parent()->display('Name'), $theme_info->parent()->display('Version' ), $name, $version );
+
+				// The theme is installed, but broken. Eh, we'll call it a wash.
+				$this->strings['process_success'] = sprintf( $this->strings['theme_broken'], $name, $version );
+				add_filter('install_theme_complete_actions', array(&$this, 'hide_activate_preview_actions') );
+				return $install_result;
+			}
+
 			$this->skin->feedback( 'parent_theme_currently_installed', $theme_info->parent()->display('Name'), $theme_info->parent()->display('Version') );
+
 			// We already have the theme, fall through.
 			return $install_result;
 		}
Index: wp-includes/class-wp-theme.php
===================================================================
--- wp-includes/class-wp-theme.php	(revision 22730)
+++ wp-includes/class-wp-theme.php	(working copy)
@@ -254,6 +254,7 @@
 				// Parent theme is missing.
 				$this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
 				$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+				$this->parent = new WP_Theme( $this->template, $this->theme_root, $this );
 				return;
 			}
 		}
