Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 18670)
+++ wp-includes/theme.php	(working copy)
@@ -1248,9 +1248,8 @@
 function switch_theme($template, $stylesheet) {
 	global $wp_theme_directories, $sidebars_widgets;
 
-	if ( ! is_array( $sidebars_widgets ) )
-		$sidebars_widgets = wp_get_sidebars_widgets();
-	set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) );
+	if ( is_array( $sidebars_widgets ) )
+		set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) );
 
 	$old_theme = get_current_theme();
 
Index: wp-includes/widgets.php
===================================================================
--- wp-includes/widgets.php	(revision 18670)
+++ wp-includes/widgets.php	(working copy)
@@ -998,7 +998,7 @@
 	if ( $deprecated !== true )
 		_deprecated_argument( __FUNCTION__, '2.8.1' );
 
-	global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets;
+	global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets, $sidebars_widgets;
 
 	// If loading from front page, consult $_wp_sidebars_widgets rather than options
 	// to see if wp_convert_widget_settings() has made manipulations in memory.
@@ -1219,9 +1219,6 @@
 		$_sidebars_widgets = $old_sidebars_widgets['data'];
 		remove_theme_mod( 'sidebars_widgets' );
 	} else {
-		if ( ! is_array( $sidebars_widgets ) )
-			$sidebars_widgets = wp_get_sidebars_widgets();
-
 		$sidebars = array_keys($wp_registered_sidebars);
 
 		unset( $sidebars_widgets['array_version'] );
@@ -1234,7 +1231,7 @@
 			return;
 
 		$_sidebars_widgets = array(
-			'wp_inactive_widgets' => $sidebars_widgets['wp_inactive_widgets']
+			'wp_inactive_widgets' => !empty( $sidebars_widgets['wp_inactive_widgets'] ) ? $sidebars_widgets['wp_inactive_widgets'] : array()
 		);
 
 		unset( $sidebars_widgets['wp_inactive_widgets'] );
