Index: wp-includes/widgets.php
===================================================================
--- wp-includes/widgets.php	(revision 5391)
+++ wp-includes/widgets.php	(working copy)
@@ -64,7 +64,12 @@
 		unset( $wp_registered_sidebars[$name] );
 }
 
-function register_sidebar_widget($name, $output_callback, $classname = '', $id = '') {
+function register_sidebar_widget( $name, $output_callback, $classname = '' ) {
+	$params = array_slice( func_get_args(), 3 );
+	return wp_register_sidebar_widget( $name, sanitize_title( $name ), $output_callback, $classname, $params );
+}
+
+function wp_register_sidebar_widget($name, $id, $output_callback, $classname = '', $params = array()) {
 	global $wp_registered_widgets, $wp_register_widget_defaults;
 
 	// Compat
@@ -74,11 +79,9 @@
 		else
 			$name = $name[0];
 	}
+	
+	$id = sanitize_title( $id );
 
-	// Last resort -- this can be broken when names get translated so please provide a unique id.
-	if ( empty($id) )
-		$id = sanitize_title($name);
-
 	if ( (!isset($classname) || empty($classname) || !is_string($classname)) && is_string($output_callback) )
 			$classname = $output_callback;
 
@@ -87,7 +90,7 @@
 		'id' => $id,
 		'callback' => $output_callback,
 		'classname' => $classname,
-		'params' => array_slice(func_get_args(), 4)
+		'params' => $params
 	);
 
 	if ( empty($output_callback) )
@@ -102,7 +105,12 @@
 	unregister_widget_control($id);
 }
 
-function register_widget_control($name, $control_callback, $width = 300, $height = 200, $id = '') {
+function register_widget_control( $name, $control_callback, $width = 300, $height = 200 ) {
+	$params = array_slice( func_get_args(), 4 );
+	return wp_register_widget_control( $name, sanitize_title( $name ), $control_callback, $width, $height, $params );
+}
+
+function wp_register_widget_control($name, $id, $control_callback, $width = 300, $height = 200, $params = array()) {
 	global $wp_registered_widget_controls, $wp_register_widget_defaults;
 
 	// Compat
@@ -112,12 +120,9 @@
 		else
 			$name = $name[0];
 	}
+	
+	$id = sanitize_title( $id );
 
-	if ( empty($id) )
-		$id = $name;
-
-	$id = sanitize_title($id);
-
 	$width = (int) $width > 90 ? (int) $width + 60 : 360;
 	$height = (int) $height > 60 ? (int) $height + 40 : 240;
 
@@ -130,7 +135,7 @@
 			'callback' => $control_callback,
 			'width' => $width,
 			'height' => $height,
-			'params' => array_slice(func_get_args(), 5)
+			'params' => $params
 		);
 }
 
@@ -870,20 +875,20 @@
 
 	$wp_register_widget_defaults = true;
 
-	register_sidebar_widget(__('Pages'), 'wp_widget_pages', 'widget_pages', 'pages');
-	register_widget_control(__('Pages'), 'wp_widget_pages_control', 300, 90, 'pages');
-	register_sidebar_widget(__('Calendar'), 'wp_widget_calendar', 'widget_calendar', 'calendar');
-	register_widget_control(__('Calendar'), 'wp_widget_calendar_control', 300, 90, 'calendar');
-	register_sidebar_widget(__('Archives'), 'wp_widget_archives', 'widget_archives', 'archives');
-	register_widget_control(__('Archives'), 'wp_widget_archives_control', 300, 100, 'archives');
-	register_sidebar_widget(__('Links'), 'wp_widget_links', 'widget_links', 'links');
-	register_sidebar_widget(__('Meta'), 'wp_widget_meta', 'widget_meta', 'meta');
-	register_widget_control(__('Meta'), 'wp_widget_meta_control', 300, 90, 'meta');
-	register_sidebar_widget(__('Search'), 'wp_widget_search', 'widget_search', 'search');
-	register_sidebar_widget(__('Categories'), 'wp_widget_categories', 'widget_categories', 'categories');
-	register_widget_control(__('Categories'), 'wp_widget_categories_control', 300, 150, 'categories');
-	register_sidebar_widget(__('Recent Posts'), 'wp_widget_recent_entries', 'widget_recent_entries', 'recent-posts');
-	register_widget_control(__('Recent Posts'), 'wp_widget_recent_entries_control', 300, 90, 'recent-posts');
+	wp_register_sidebar_widget(__('Pages'), 'pages', 'wp_widget_pages', 'widget_pages');
+	wp_register_widget_control(__('Pages'), 'pages', 'wp_widget_pages_control', 300, 90);
+	wp_register_sidebar_widget(__('Calendar'), 'calendar', 'wp_widget_calendar', 'widget_calendar');
+	wp_register_widget_control(__('Calendar'), 'calendar', 'wp_widget_calendar_control', 300, 90);
+	wp_register_sidebar_widget(__('Archives'), 'archives', 'wp_widget_archives', 'widget_archives');
+	wp_register_widget_control(__('Archives'), 'archives', 'wp_widget_archives_control', 300, 100);
+	wp_register_sidebar_widget(__('Links'), 'links', 'wp_widget_links', 'widget_links');
+	wp_register_sidebar_widget(__('Meta'), 'meta', 'wp_widget_meta', 'widget_meta');
+	wp_register_widget_control(__('Meta'), 'meta', 'wp_widget_meta_control', 300, 90);
+	wp_register_sidebar_widget(__('Search'), 'search', 'wp_widget_search', 'widget_search');
+	wp_register_sidebar_widget(__('Categories'), 'categories', 'wp_widget_categories', 'widget_categories');
+	wp_register_widget_control(__('Categories'), 'categories', 'wp_widget_categories_control', 300, 150);
+	wp_register_sidebar_widget(__('Recent Posts'), 'recent-posts', 'wp_widget_recent_entries', 'widget_recent_entries');
+	wp_register_widget_control(__('Recent Posts'), 'recent-posts', 'wp_widget_recent_entries_control', 300, 90);
 	wp_widget_text_register();
 	wp_widget_rss_register();
 	wp_widget_recent_comments_register();
