Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 17501)
+++ wp-includes/default-widgets.php	(working copy)
@@ -177,11 +177,16 @@
 
 	function widget( $args, $instance ) {
 		extract($args);
-		$title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base);
 
+		$title = '';
+		if ( isset( $instance['title'] ) ) {
+			$title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
+		}
+
 		echo $before_widget;
-		if ( $title )
+		if ( ! empty( $title ) ) {
 			echo $before_title . $title . $after_title;
+		}
 
 		// Use current theme search form if it exists
 		get_search_form();
@@ -220,8 +225,8 @@
 
 	function widget( $args, $instance ) {
 		extract($args);
-		$c = $instance['count'] ? '1' : '0';
-		$d = $instance['dropdown'] ? '1' : '0';
+		$c = ( isset( $instance['count'] ) && $instance['count'] ) ? '1' : '0';
+		$d = ( isset( $instance['dropdown'] ) && $instance['dropdown'] ) ? '1' : '0';
 		$title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title'], $instance, $this->id_base);
 
 		echo $before_widget;
@@ -375,11 +380,23 @@
 
 	function widget( $args, $instance ) {
 		extract($args);
-		$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
-		$text = apply_filters( 'widget_text', $instance['text'], $instance );
+		$title = '';
+		if ( isset( $instance['title'] ) ) {
+			$title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
+		}
+		$text = '';
+		if ( isset( $instance['text'] ) ) {
+			$text = apply_filters( 'widget_text', $instance['text'], $instance );
+		}
 		echo $before_widget;
 		if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
-			<div class="textwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div>
+			<div class="textwidget"><?php
+				if ( isset( $instance['filter'] ) && $instance['filter'] ) {
+					echo wpautop( $text );
+				} else {
+					echo $text;
+				}
+				?></div>
 		<?php
 		echo $after_widget;
 	}
@@ -426,9 +443,9 @@
 		extract( $args );
 
 		$title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base);
-		$c = $instance['count'] ? '1' : '0';
-		$h = $instance['hierarchical'] ? '1' : '0';
-		$d = $instance['dropdown'] ? '1' : '0';
+		$c = ( isset( $instance['count'] ) && $instance['count'] ) ? '1' : '0';
+		$h = ( isset( $instance['hierarchical'] ) && $instance['hierarchical'] ) ? '1' : '0';
+		$d = ( isset( $instance['dropdown'] ) && $instance['dropdown'] ) ? '1' : '0';
 
 		echo $before_widget;
 		if ( $title )
@@ -525,7 +542,7 @@
 		if ( !is_array($cache) )
 			$cache = array();
 
-		if ( isset($cache[$args['widget_id']]) ) {
+		if ( isset( $args['widget_id'] ) && isset( $cache[$args['widget_id']] ) ) {
 			echo $cache[$args['widget_id']];
 			return;
 		}
@@ -534,9 +551,12 @@
 		extract($args);
 
 		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base);
-		if ( ! $number = absint( $instance['number'] ) )
- 			$number = 10;
 
+ 		$number = 10;
+		if ( isset( $instance['number'] ) && 0 < absint( $instance['number'] ) ) {
+			$number = absint( $instance['number'] );
+		}
+
 		$r = new WP_Query(array('posts_per_page' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'ignore_sticky_posts' => true));
 		if ($r->have_posts()) :
 ?>
@@ -554,8 +574,10 @@
 
 		endif;
 
-		$cache[$args['widget_id']] = ob_get_flush();
-		wp_cache_set('widget_recent_posts', $cache, 'widget');
+		if ( isset( $args['widget_id'] ) && isset( $cache[$args['widget_id']] ) ) {
+			$cache[$args['widget_id']] = ob_get_flush();
+			wp_cache_set('widget_recent_posts', $cache, 'widget');
+		}
 	}
 
 	function update( $new_instance, $old_instance ) {
@@ -628,7 +650,7 @@
 		if ( ! is_array( $cache ) )
 			$cache = array();
 
-		if ( isset( $cache[$args['widget_id']] ) ) {
+		if ( isset( $args['widget_id'] ) && isset( $cache[$args['widget_id']] ) ) {
 			echo $cache[$args['widget_id']];
 			return;
 		}
@@ -637,8 +659,10 @@
  		$output = '';
  		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title']);
 
-		if ( ! $number = absint( $instance['number'] ) )
- 			$number = 5;
+		$number = 5;
+		if ( isset( $instance['number'] ) && 0 < absint( $instance['number'] ) ) {
+			$number = absint( $instance['number'] );
+		}
 
 		$comments = get_comments( array( 'number' => $number, 'status' => 'approve' ) );
 		$output .= $before_widget;
@@ -655,8 +679,10 @@
 		$output .= $after_widget;
 
 		echo $output;
-		$cache[$args['widget_id']] = $output;
-		wp_cache_set('widget_recent_comments', $cache, 'widget');
+		if ( isset( $args['widget_id'] ) && isset( $cache[$args['widget_id']] ) ) {
+			$cache[$args['widget_id']] = $output;
+			wp_cache_set('widget_recent_comments', $cache, 'widget');
+		}
 	}
 
 	function update( $new_instance, $old_instance ) {
@@ -705,10 +731,12 @@
 
 		extract($args, EXTR_SKIP);
 
-		$url = $instance['url'];
-		while ( stristr($url, 'http') != $url )
-			$url = substr($url, 1);
-
+		$url = '';
+		if ( isset( $instance['url'] ) ) {
+			while ( stristr( $url, 'http' ) != $url )
+				$url = substr( $url, 1 );
+		}
+		
 		if ( empty($url) )
 			return;
 
@@ -1059,7 +1087,10 @@
 
 	function widget($args, $instance) {
 		// Get menu
-		$nav_menu = wp_get_nav_menu_object( $instance['nav_menu'] );
+		$nav_menu = false;
+		if ( isset( $instance['nav_menu'] ) ) {
+			$nav_menu = wp_get_nav_menu_object( $instance['nav_menu'] );
+		}
 
 		if ( !$nav_menu )
 			return;
