[evolution-ews] Bug #665986 - Crash when failed to get a message from a server



commit 152c09732aa0af9b42d059e65230cdb5db121dee
Author: Milan Crha <mcrha redhat com>
Date:   Tue Jul 24 20:07:37 2012 +0200

    Bug #665986 - Crash when failed to get a message from a server

 src/camel/camel-ews-folder.c  |    2 +-
 src/server/e-ews-connection.c |   25 +++++++++++++++++++++++--
 2 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/src/camel/camel-ews-folder.c b/src/camel/camel-ews-folder.c
index 5733cba..cc430ac 100644
--- a/src/camel/camel-ews-folder.c
+++ b/src/camel/camel-ews-folder.c
@@ -449,7 +449,7 @@ camel_ews_folder_get_message (CamelFolder *folder,
 		cancellable, &local_error);
 	g_free (mime_dir);
 
-	if (!res) {
+	if (!res || !items) {
 		camel_ews_store_maybe_disconnect (ews_store, local_error);
 		g_propagate_error (error, local_error);
 		goto exit;
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index 8421dce..c3d5898 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -3238,6 +3238,11 @@ e_ews_connection_get_items_finish (EEwsConnection *cnc,
 	if (g_simple_async_result_propagate_error (simple, error))
 		return FALSE;
 
+	if (!async_data->items) {
+		g_set_error_literal (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_ITEMNOTFOUND, _("No items found"));
+		return FALSE;
+	}
+
 	*items = async_data->items;
 
 	return TRUE;
@@ -3646,9 +3651,14 @@ e_ews_connection_update_items_finish (EEwsConnection *cnc,
 
 	if (g_simple_async_result_propagate_error (simple, error))
 		return FALSE;
-	if (ids)
+	if (ids) {
+		if (!async_data->items) {
+			g_set_error_literal (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_ITEMNOTFOUND, _("No items found"));
+			return FALSE;
+		}
+
 		*ids = async_data->items;
-	else {
+	} else {
 		while (async_data->items) {
 			g_object_unref (async_data->items->data);
 			async_data->items = g_slist_remove (async_data->items,
@@ -3775,6 +3785,12 @@ e_ews_connection_create_items_finish (EEwsConnection *cnc,
 
 	if (g_simple_async_result_propagate_error (simple, error))
 		return FALSE;
+
+	if (!async_data->items) {
+		g_set_error_literal (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_ITEMNOTFOUND, _("No items found"));
+		return FALSE;
+	}
+
 	*ids = async_data->items;
 
 	return TRUE;
@@ -4788,6 +4804,11 @@ e_ews_connection_move_items_finish (EEwsConnection *cnc,
 	if (g_simple_async_result_propagate_error (simple, error))
 		return FALSE;
 
+	if (!async_data->items) {
+		g_set_error_literal (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_ITEMNOTFOUND, _("No items found"));
+		return FALSE;
+	}
+
 	*items = async_data->items;
 
 	return TRUE;



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