diff --git a/libnautilus-private/nautilus-file-utilities.h b/libnautilus-private/nautilus-file-utilities.h
index e1c68cd..509ba47 100644
--- a/libnautilus-private/nautilus-file-utilities.h
+++ b/libnautilus-private/nautilus-file-utilities.h
@@ -29,6 +29,7 @@
 #include <gtk/gtk.h>
 
 #define NAUTILUS_SAVED_SEARCH_EXTENSION ".savedSearch"
+#define NAUTILUS_SAVED_SEARCH_EXTENSION_LENGTH 12
 #define NAUTILUS_SAVED_SEARCH_MIMETYPE "application/x-gnome-saved-search"
 
 /* These functions all return something something that needs to be
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index e69a794..9ad6a47 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -194,6 +194,9 @@ nautilus_file_set_display_name (NautilusFile *file,
 				gboolean custom)
 {
 	gboolean changed;
+	char* stripped_name;
+		
+	stripped_name = NULL;
 
 	if (custom && display_name == NULL) {
 		/* We're re-setting a custom display name, invalidate it if
@@ -225,14 +228,23 @@ nautilus_file_set_display_name (NautilusFile *file,
 		
 		eel_ref_str_unref (file->details->display_name);
 		
-		if (g_strcmp0 (eel_ref_str_peek (file->details->name), display_name) == 0) {
+		/* Do not set extension for saved search files */
+		if (NAUTILUS_IS_SAVED_SEARCH_FILE (file)) {
+			stripped_name = g_strndup (display_name, strlen(display_name) - NAUTILUS_SAVED_SEARCH_EXTENSION_LENGTH);
+		} else {
+			stripped_name = g_strdup(display_name);
+		}
+		
+		if (g_strcmp0 (eel_ref_str_peek (file->details->name), stripped_name) == 0) {
 			file->details->display_name = eel_ref_str_ref (file->details->name);
 		} else {
-			file->details->display_name = eel_ref_str_new (display_name);
+			file->details->display_name = eel_ref_str_new (stripped_name);
 		}
 		
 		g_free (file->details->display_name_collation_key);
-		file->details->display_name_collation_key = g_utf8_collate_key_for_filename (display_name, -1);
+		file->details->display_name_collation_key = g_utf8_collate_key_for_filename (stripped_name, -1);
+		
+		g_free (stripped_name);
 	}
 
 	if (g_strcmp0 (eel_ref_str_peek (file->details->edit_name), edit_name) != 0) {
@@ -1731,6 +1743,10 @@ rename_get_info_callback (GObject *source_object,
 							     NAUTILUS_FILE_ATTRIBUTE_LINK_INFO);
 		}
 		
+		if (NAUTILUS_IS_SAVED_SEARCH_FILE (op->file)) {
+			nautilus_file_clear_display_name (op->file);
+		}
+		
 		g_object_unref (new_info);
 	}
 	nautilus_file_operation_complete (op, NULL, error);
@@ -1831,7 +1847,8 @@ nautilus_file_rename (NautilusFile *file,
 	 */
 	if (!NAUTILUS_IS_DESKTOP_ICON_FILE (file) &&
 	    !is_renameable_desktop_file &&
-	    name_is (file, new_name)) {
+	    name_is (file, new_name) &&
+	    !NAUTILUS_IS_SAVED_SEARCH_FILE (file)) {
 		(* callback) (file, NULL, NULL, callback_data);
 		return;
 	}
@@ -1918,9 +1935,13 @@ nautilus_file_rename (NautilusFile *file,
 			g_free (new_file_name);
 			return;
 		}
-	} else {
+	} else if (NAUTILUS_IS_SAVED_SEARCH_FILE(file)) {
+		new_file_name = g_strdup_printf ("%s" NAUTILUS_SAVED_SEARCH_EXTENSION, new_name);
+	} else {		
 		new_file_name = g_strdup (new_name);
 	}
+	
+
 
 	/* Set up a renaming operation. */
 	op = nautilus_file_operation_new (file, callback, callback_data);
