Index: src/totem-playlist.c
===================================================================
--- src/totem-playlist.c	(revision 4020)
+++ src/totem-playlist.c	(working copy)
@@ -888,18 +888,38 @@
 	guint i;
 
 	if (active_format > 0)
-		totem_playlist_save_current_playlist_ext (playlist, filename,
-							save_types[active_format - 1].type);
-	else {
-		for (i = 0; i < G_N_ELEMENTS(save_types); i++) {
-			if (g_str_has_suffix (filename, save_types[i].suffix)) {
+	/* File format has been selected, thus the file extension is based on that selection */
+	{
+		if (g_str_has_suffix (filename, save_types[active_format - 1].suffix))
+		/* Selected file format and suffix are the same */
+			totem_playlist_save_current_playlist_ext (playlist, filename, save_types[active_format - 1].type);
+		else
+		/* Selected file format and suffix are not the same */
+		{
+			char *tmp;
+			tmp = g_strconcat (filename, save_types[active_format - 1].suffix, NULL);
+			filename = tmp;
+
+			totem_playlist_save_current_playlist_ext (playlist, filename, save_types[active_format - 1].type);
+		}
+	}
+	else 
+	/* No specific file format has been selected, extension is based on the file name */
+	{
+		for (i = 0; i < G_N_ELEMENTS(save_types); i++)
+		{
+			if (g_str_has_suffix (filename, save_types[i].suffix))
+			{
 				cur = &save_types[i];
 				break;
 			}
 		}
+
 		if (cur == NULL)
-			totem_playlist_error (_("Could not save the playlist"), _("Unknown file extension."), playlist);
+		/* The playlist is saved with the default suffix, because the supplied suffix wasn't in save_types */
+			totem_playlist_save_current_playlist_ext (playlist, filename, save_types[0].type);
 		else
+		/* The playlist is saved with the entered suffix */
 			totem_playlist_save_current_playlist_ext (playlist, filename, cur->type);
 	}
 }
@@ -991,9 +1011,9 @@
 
 		totem_playlist_save_playlist (playlist, filename, active_format);
 		g_free (filename);
-	} else {
+	}
+	else
 		gtk_widget_destroy (fs);
-	}
 }
 
 static void
