Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 25093)
+++ wp-includes/taxonomy.php	(working copy)
@@ -2068,6 +2068,7 @@
 	$name = wp_unslash($name);
 	$description = wp_unslash($description);
 
+	$slug_provided = $slug;
 	if ( empty($slug) )
 		$slug = sanitize_title($name);
 
@@ -2093,7 +2094,10 @@
 			// Hierarchical, and it matches an existing term, Do not allow same "name" in the same level.
 			$siblings = get_terms($taxonomy, array('fields' => 'names', 'get' => 'all', 'parent' => (int)$parent) );
 			if ( in_array($name, $siblings) ) {
-				return new WP_Error('term_exists', __('A term with the name provided already exists with this parent.'), $exists['term_id']);
+				if ( $slug_provided )
+					return new WP_Error('term_exists', __('A term with the name and slug provided already exists with this parent.'), $exists['term_id']);
+				else
+					return new WP_Error('term_exists', __('A term with the name provided already exists with this parent.'), $exists['term_id']);
 			} else {
 				$slug = wp_unique_term_slug($slug, (object) $args);
 				if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
@@ -2108,7 +2112,7 @@
 			$term_id = (int) $wpdb->insert_id;
 		} elseif ( $exists = term_exists( (int) $term_id, $taxonomy ) )  {
 			// Same name, same slug.
-			return new WP_Error('term_exists', __('A term with the name provided already exists.'), $exists['term_id']);
+			return new WP_Error('term_exists', __('A term with the name and slug provided already exists.'), $exists['term_id']);
 		}
 	} else {
 		// This term does not exist at all in the database, Create it.
