Index: src/wp-includes/query.php
===================================================================
--- src/wp-includes/query.php	(revision 27650)
+++ src/wp-includes/query.php	(working copy)
@@ -3700,12 +3700,32 @@
 			$page_for_posts = get_option('page_for_posts');
 			$this->queried_object = get_post( $page_for_posts );
 			$this->queried_object_id = (int) $this->queried_object->ID;
-		} elseif ( $this->is_singular && !is_null($this->post) ) {
-			$this->queried_object = $this->post;
-			$this->queried_object_id = (int) $this->post->ID;
+		} elseif ( $this->is_singular ) {
+			if ( isset( $this->post ) ) {
+				$this->queried_object = $this->post;
+				$this->queried_object_id = (int) $this->post->ID;
+			} elseif ( $this->get('p') ) {
+				$this->queried_object = get_post( $this->get('p'));
+				$this->queried_object_id = $this->get('p');
+			} elseif ( $this->get('page_id') ) {
+				$this->queried_object = get_post( $this->get('page_id'));
+				$this->queried_object_id = $this->get('page_id');
+			} elseif ( $this->get('name') ) {
+				$this->queried_object = $this->post = get_page_by_path( 
+					$this->get('name'), 
+					OBJECT, 
+					$this->get('post_type') ? $this->get('post_type') :'post'
+				);
+				$this->queried_object_id = (int) $this->post->ID;
+			}
 		} elseif ( $this->is_author ) {
-			$this->queried_object_id = (int) $this->get('author');
-			$this->queried_object = get_userdata( $this->queried_object_id );
+			if ( $this->get('author') ) {
+				$this->queried_object_id = (int) $this->get('author');
+				$this->queried_object = get_userdata( $this->queried_object_id );
+			} elseif ($this->get('author_name')) {
+				$this->queried_object = get_user_by( 'login', $this->get('author_name') );
+				$this->queried_object_id = (int) $this->queried_object->ID;		
+			}
 		}
 
 		return $this->queried_object;
