[goffice] go_file_saver_for_mime_type: fix crash.



commit 2dcac89e74c0438fea74b3e89c15716573cc7184
Author: Morten Welinder <terra gnome org>
Date:   Tue Oct 27 16:05:53 2009 -0400

    go_file_saver_for_mime_type: fix crash.

 ChangeLog          |    5 +++++
 goffice/app/file.c |   21 ++++++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c5b012b..f02173b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-27  Morten Welinder  <terra gnome org>
+
+	* goffice/app/file.c (go_file_saver_for_mime_type): Ignore file
+	savers with no mime type instead of crashing.
+
 2009-10-19  Jean Brefort  <jean brefort normalesup org>
 
 	* goffice/graph/gog-chart-map.c (polar_map_view_to_2D): take radar plot
diff --git a/goffice/app/file.c b/goffice/app/file.c
index d9bc3e0..b6dee4a 100644
--- a/goffice/app/file.c
+++ b/goffice/app/file.c
@@ -998,15 +998,22 @@ go_file_saver_for_mime_type (gchar const *mime_type)
 
 	g_return_val_if_fail (mime_type != NULL, NULL);
 
-	for (l = default_file_saver_list ; l != NULL; l = l->next)
-		if (!strcmp (go_file_saver_get_mime_type (((DefaultFileSaver *)(l->data))->saver), mime_type))
-			return ((DefaultFileSaver *)(l->data))->saver;
+	for (l = default_file_saver_list ; l != NULL; l = l->next) {
+		DefaultFileSaver *dfs = l->data;
+		GOFileSaver *fs = dfs->saver;
+		const char *this_type = go_file_saver_get_mime_type (fs);
+		if (this_type && !strcmp (this_type, mime_type))
+			return fs;
+	}
 
-	for (l = file_saver_list; l != NULL; l = l->next)
-		if (!strcmp (go_file_saver_get_mime_type (l->data), mime_type))
-			return l->data;
+	for (l = file_saver_list; l != NULL; l = l->next) {
+		GOFileSaver *fs = l->data;
+		const char *this_type = go_file_saver_get_mime_type (fs);
+		if (this_type && !strcmp (this_type, mime_type))
+			return fs;
+	}
 
-	return (NULL);
+	return NULL;
 }
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]