Index: wp-admin/includes/class-wp-posts-list-table.php
===================================================================
--- wp-admin/includes/class-wp-posts-list-table.php	(revision 19259)
+++ wp-admin/includes/class-wp-posts-list-table.php	(working copy)
@@ -48,14 +48,7 @@
 	function __construct() {
 		global $post_type_object, $wpdb;
 
-		if ( !isset( $_REQUEST['post_type'] ) )
-			$post_type = 'post';
-		elseif ( in_array( $_REQUEST['post_type'], get_post_types( array( 'show_ui' => true ) ) ) )
-			$post_type = $_REQUEST['post_type'];
-		else
-			wp_die( __( 'Invalid post type' ) );
-		$_REQUEST['post_type'] = $post_type;
-
+		$post_type = get_current_screen()->post_type;
 		$post_type_object = get_post_type_object( $post_type );
 
 		if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) {
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 19259)
+++ wp-admin/includes/template.php	(working copy)
@@ -1392,7 +1392,7 @@
 	},
 	ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>',
 	pagenow = '<?php echo $current_screen->id; ?>',
-	typenow = '<?php if ( isset($current_screen->post_type) ) echo $current_screen->post_type; ?>',
+	typenow = '<?php echo $current_screen->post_type; ?>',
 	adminpage = '<?php echo $admin_body_class; ?>',
 	thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format['thousands_sep'] ); ?>',
 	decimalPoint = '<?php echo addslashes( $wp_locale->number_format['decimal_point'] ); ?>',
Index: wp-admin/includes/screen.php
===================================================================
--- wp-admin/includes/screen.php	(revision 19259)
+++ wp-admin/includes/screen.php	(working copy)
@@ -399,7 +399,7 @@
 		if ( is_a( $hook_name, 'WP_Screen' ) )
 			return $hook_name;
 
-		$action = $post_type = $taxonomy = '';
+		$action = $post_type = $taxonomy = null;
 		$is_network = $is_user = false;
 
 		if ( $hook_name )
@@ -447,10 +447,10 @@
 
 		// If this is the current screen, see if we can be more accurate for post types and taxonomies.
 		if ( ! $hook_name ) {
-			if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) )
-				$post_type = $_REQUEST['post_type'];
-			if ( isset( $_REQUEST['taxonomy'] ) && taxonomy_exists( $_REQUEST['taxonomy'] ) )
-				$taxonomy = $_REQUEST['taxonomy'];
+			if ( isset( $_REQUEST['post_type'] ) )
+				$post_type = post_type_exists( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : false;
+			if ( isset( $_REQUEST['taxonomy'] ) )
+				$taxonomy = taxonomy_exists( $_REQUEST['taxonomy'] ) ? $_REQUEST['taxonomy'] : false;
 
 			switch ( $base ) {
 				case 'post' :
@@ -468,7 +468,7 @@
 					}
 					break;
 				case 'edit-tags' :
-					if ( ! $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) )
+					if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) )
 						$post_type = 'post';
 					break;
 			}
@@ -476,17 +476,17 @@
 
 		switch ( $base ) {
 			case 'post' :
-				if ( ! $post_type )
+				if ( null === $post_type )
 					$post_type = 'post';
 				$id = $post_type;
 				break;
 			case 'edit' :
-				if ( ! $post_type )
+				if ( null === $post_type )
 					$post_type = 'post';
 				$id .= '-' . $post_type;
 				break;
 			case 'edit-tags' :
-				if ( ! $taxonomy )
+				if ( null === $taxonomy )
 					$taxonomy = 'post_tag';
 				$id = 'edit-' . $taxonomy;
 				break;
@@ -511,8 +511,8 @@
 
 		$screen->base       = $base;
 		$screen->action     = $action;
-		$screen->post_type  = $post_type;
-		$screen->taxonomy   = $taxonomy;
+		$screen->post_type  = (string) $post_type;
+		$screen->taxonomy   = (string) $taxonomy;
 		$screen->is_user    = $is_user;
 		$screen->is_network = $is_network;
 
Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 19259)
+++ wp-admin/edit.php	(working copy)
@@ -9,20 +9,18 @@
 /** WordPress Administration Bootstrap */
 require_once( './admin.php' );
 
-if ( !isset($_GET['post_type']) )
-	$post_type = 'post';
-elseif ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true ) ) ) )
-	$post_type = $_GET['post_type'];
-else
-	wp_die( __('Invalid post type') );
+if ( ! $taxnow )
+	wp_die( __( 'Invalid post type' ) );
 
-$_GET['post_type'] = $post_type;
-
+$post_type = $typenow;
 $post_type_object = get_post_type_object( $post_type );
 
-if ( !current_user_can($post_type_object->cap->edit_posts) )
-	wp_die(__('Cheatin&#8217; uh?'));
+if ( ! $post_type_object )
+	wp_die( __( 'Invalid post type' ) );
 
+if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
+	wp_die( __( 'Cheatin&#8217; uh?' ) );
+
 $wp_list_table = _get_list_table('WP_Posts_List_Table');
 $pagenum = $wp_list_table->get_pagenum();
 
