Index: wp-admin/import/blogger.php
===================================================================
--- wp-admin/import/blogger.php	(revision 14739)
+++ wp-admin/import/blogger.php	(working copy)
@@ -162,7 +162,7 @@
 					if ( $tag['tag'] == 'TITLE' ) {
 						$blog['title'] = $tag['value'];
 					} elseif ( $tag['tag'] == 'SUMMARY' ) {
-						$blog['summary'] = $tag['value'];
+						$blog['summary'] = ( isset( $tag['value'] ) ) ? $tag['value'] : '';
 					} elseif ( $tag['tag'] == 'LINK' ) {
 						if ( $tag['attributes']['REL'] == 'alternate' && $tag['attributes']['TYPE'] == 'text/html' ) {
 							$parts = parse_url( $tag['attributes']['HREF'] );
@@ -205,6 +205,8 @@
 		$posts    = __('Posts');
 		$comments = __('Comments');
 		$noscript = __('This feature requires Javascript but it seems to be disabled. Please enable Javascript and then reload this page. Don&#8217;t worry, you can turn it back off when you&#8217;re done.');
+		$init     = '';
+		$rows     = '';
 
 		$interval = STATUS_INTERVAL * 1000;
 
@@ -499,9 +501,11 @@
 						if ( preg_match('/rel=.previous./', $match) )
 							$query = @html_entity_decode( preg_replace('/^.*href=[\'"].*\?(.+)[\'"].*$/', '$1', $match), ENT_COMPAT, get_option('blog_charset') );
 
-				parse_str($query, $q);
-
-				$this->blogs[$importing_blog]['comments_start_index'] = (int) $q['start-index'];
+				if ( $query ) {
+					parse_str($query, $q);
+					$this->blogs[$importing_blog]['comments_start_index'] = (int) $q['start-index'];
+				} else
+					$this->blogs[$importing_blog]['comments_start_index'] = 0;
 				$this->save_vars();
 			} while ( !empty( $query ) && $this->have_time() );
 		}
@@ -560,6 +564,10 @@
 		$post_content = str_replace('<br>', '<br />', $post_content);
 		$post_content = str_replace('<hr>', '<hr />', $post_content);
 
+		if( !isset( $this->blogs[$importing_blog]['posts_skipped'] ) ) {
+			$this->blogs[$importing_blog]['posts_skipped'] = 0;
+		}
+
 		// Checks for duplicates
 		if ( isset( $this->blogs[$importing_blog]['posts'][$entry->old_permalink] ) ) {
 			++$this->blogs[$importing_blog]['posts_skipped'];
@@ -582,6 +590,9 @@
 			add_post_meta( $post_id, 'blogger_permalink', $entry->old_permalink, true );
 
 			$this->blogs[$importing_blog]['posts'][$entry->old_permalink] = $post_id;
+			if( !isset( $this->blogs[$importing_blog]['posts_done'] ) ) {
+				$this->blogs[$importing_blog]['posts_done'] = 0;
+			}
 			++$this->blogs[$importing_blog]['posts_done'];
 		}
 		$this->save_vars();
@@ -602,9 +613,13 @@
 		}
 
 		$comment_post_ID = (int) $this->blogs[$importing_blog]['posts'][$entry->old_post_permalink];
-		preg_match('#<name>(.+?)</name>.*(?:\<uri>(.+?)</uri>)?#', $entry->author, $matches);
+		preg_match('#<name>(.+?)</name>.*?(?:\<uri>(.+?)</uri>)?#', $entry->author, $matches);
+
+		// Not all comments have an author url
+		$comment_author_url = isset( $matches[2] ) ? $matches[2] : '';
+
 		$comment_author  = addslashes( $this->no_apos( strip_tags( (string) $matches[1] ) ) );
-		$comment_author_url = addslashes( $this->no_apos( strip_tags( (string) $matches[2] ) ) );
+		$comment_author_url = addslashes( $this->no_apos( strip_tags( (string) $comment_author_url ) ) );
 		$comment_date    = $this->convert_date( $entry->updated );
 		$comment_content = addslashes( $this->no_apos( @html_entity_decode( $entry->content, ENT_COMPAT, get_option('blog_charset') ) ) );
 
@@ -618,6 +633,9 @@
 			isset( $this->blogs[$importing_blog]['comments'][$entry->old_permalink] ) ||
 			comment_exists( $comment_author, $comment_date )
 		) {
+			if( !isset( $this->blogs[$importing_blog]['comments_skipped'] ) ) {
+				$this->blogs[$importing_blog]['comments_skipped'] = 0;
+			}
 			++$this->blogs[$importing_blog]['comments_skipped'];
 		} else {
 			$comment = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_date', 'comment_content');
@@ -627,6 +645,10 @@
 
 			$this->blogs[$importing_blog]['comments'][$entry->old_permalink] = $comment_id;
 
+			if( !isset( $this->blogs[$importing_blog]['comments_done'] ) ) {
+				$this->blogs[$importing_blog]['comments_done'] = 0;
+			}
+
 			++$this->blogs[$importing_blog]['comments_done'];
 		}
 		$this->save_vars();
@@ -665,6 +687,7 @@
 		$mapthis = __('Blogger username');
 		$tothis = __('WordPress login');
 		$submit = esc_js( __('Save Changes') );
+		$rows = '';
 
 		foreach ( $blog['authors'] as $i => $author )
 			$rows .= "<tr><td><label for='authors[$i]'>{$author[0]}</label></td><td><select name='authors[$i]' id='authors[$i]'>" . $this->get_user_options($author[1]) . "</select></td></tr>";
@@ -674,6 +697,7 @@
 
 	function get_user_options($current) {
 		global $importer_users;
+		$options = '';
 		if ( ! isset( $importer_users ) )
 			$importer_users = (array) get_users_of_blog();
 
@@ -743,6 +767,7 @@
 	}
 
 	function _txrx( $sock, $request ) {
+		$response = '';
 		fwrite( $sock, $request );
 		while ( ! feof( $sock ) )
 			$response .= @ fread ( $sock, 8192 );
@@ -787,11 +812,14 @@
 		$response_header_array = array();
 		foreach($response_header_lines as $header_line) {
 			list($header,$value) = explode(': ', $header_line, 2);
-			$response_header_array[$header] .= $value."\n";
+			$response_header_array[$header] = $value."\n";
 		}
 
 		$cookie_array = array();
-		$cookies = explode("\n", $response_header_array["Set-Cookie"]);
+		$cookies = array();
+		if( isset($response_header_array["Set-Cookie"]) ) {
+			$cookies = explode("\n", $response_header_array["Set-Cookie"]);
+		}
 		foreach($cookies as $this_cookie) { array_push($cookie_array, "Cookie: ".$this_cookie); }
 
 		return array("code" => $response_code, "header" => $response_header_array, "cookies" => $cookie_array, "body" => $response_body);
@@ -983,7 +1011,13 @@
 			array_push($this->in_content, "<". $this->ns_to_prefix($name) ."{$xmlns_str}{$attrs_str}");
 		} else if (in_array($tag, $this->ATOM_CONTENT_ELEMENTS) || in_array($tag, $this->ATOM_SIMPLE_ELEMENTS)) {
 			$this->in_content = array();
-			$this->is_xhtml = $attrs['type'] == 'xhtml';
+			
+			if( isset( $attrs['type'] ) ) {
+				$this->is_xhtml = $attrs['type'] == 'xhtml';
+			} else {
+				$this->is_xhtml = false;
+			}
+
 			array_push($this->in_content, array($tag,$this->depth));
 		} else if ($tag == 'link') {
 			array_push($this->entry->links, $attrs);
@@ -1036,8 +1070,13 @@
 	function cdata($parser, $data) {
 		#print str_repeat(" ", $this->depth * $this->indent) . "data: #" . $data . "#\n";
 		if (!empty($this->in_content)) {
+			$in_content = $this->in_content[count($this->in_content)-1];
+			if( is_array( $in_content ) ) {
+				$in_content = $in_content[0];
+			}
+
 			// handle self-closing tags (case: text node found, need to close element started)
-			if (strpos($this->in_content[count($this->in_content)-1], '<') !== false) {
+			if (strpos($in_content, '<') !== false) {
 				array_push($this->in_content, ">");
 			}
 			array_push($this->in_content, $this->xml_escape($data));
