Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 10849)
+++ wp-includes/default-filters.php	(working copy)
@@ -149,16 +149,17 @@
 add_filter('tiny_mce_before_init', '_mce_set_direction');
 add_filter('pre_kses', 'wp_pre_kses_less_than');
 add_filter('sanitize_title', 'sanitize_title_with_dashes');
+add_filter('wp_unique_filename', 'sanitize_title_with_dashes');
 add_action('check_comment_flood', 'check_comment_flood_db', 10, 3);
 add_filter('comment_flood_filter', 'wp_throttle_comment_flood', 10, 3);
 add_filter('pre_comment_content', 'wp_rel_nofollow', 15);
 add_filter('comment_email', 'antispambot');
 add_filter('option_tag_base', '_wp_filter_taxonomy_base');
 add_filter('option_category_base', '_wp_filter_taxonomy_base');
-add_filter( 'the_posts', '_close_comments_for_old_posts' );
-add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 );
-add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 );
-add_filter( 'editable_slug', 'urldecode' );
+add_filter('the_posts', '_close_comments_for_old_posts');
+add_filter('comments_open', '_close_comments_for_old_post', 10, 2);
+add_filter('pings_open', '_close_comments_for_old_post', 10, 2);
+add_filter('editable_slug', 'urldecode');
 
 // Atom SSL support
 add_filter('atom_service_url','atom_service_url_filter');
@@ -192,9 +193,9 @@
 add_action('admin_print_footer_scripts', 'print_footer_scripts', 20);
 add_action('admin_print_styles', 'print_admin_styles', 20);
 add_action('init', 'smilies_init', 5);
-add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 );
-add_action( 'shutdown', 'wp_ob_end_flush_all', 1);
-add_action( 'pre_post_update', 'wp_save_post_revision' );
+add_action('plugins_loaded', 'wp_maybe_load_widgets', 0);
+add_action('shutdown', 'wp_ob_end_flush_all', 1);
+add_action('pre_post_update', 'wp_save_post_revision');
 add_action('publish_post', '_publish_post_hook', 5, 1);
 add_action('future_post', '_future_post_hook', 5, 2);
 add_action('future_page', '_future_post_hook', 5, 2);
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 10849)
+++ wp-includes/functions.php	(working copy)
@@ -2020,7 +2020,8 @@
 
 		$filename = str_replace( $ext, '', $filename );
 		// Strip % so the server doesn't try to decode entities.
-		$filename = str_replace('%', '', sanitize_title_with_dashes( $filename ) ) . $ext;
+		$filename = str_replace('%', '', $filename ) . $ext;
+		$filename = apply_filters('wp_unique_filename', $filename);
 
 		while ( file_exists( $dir . "/$filename" ) ) {
 			if ( '' == "$number$ext" )
