Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 13283)
+++ wp-includes/default-widgets.php	(working copy)
@@ -554,7 +554,8 @@
 		</ul>
 		<?php echo $after_widget; ?>
 <?php
-			wp_reset_query();  // Restore global post data stomped by the_post().
+		wp_reset_postdata();
+
 		endif;
 
 		$cache[$args['widget_id']] = ob_get_flush();
Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 13283)
+++ wp-includes/query.php	(working copy)
@@ -75,6 +75,17 @@
 function wp_reset_query() {
 	unset($GLOBALS['wp_query']);
 	$GLOBALS['wp_query'] =& $GLOBALS['wp_the_query'];
+	wp_reset_postdata();
+}
+
+/**
+ * After looping through a separate query, this function restores
+ * the $post global to the last post in the main query
+ *
+ * @since 3.0.0
+ * @uses $wp_query
+ */
+function wp_reset_postdata() {
 	global $wp_query;
 	if ( !empty($wp_query->post) ) {
 		$GLOBALS['post'] = $wp_query->post;
