prevent possible application crashes. It's useful
also for detecting mail operations with invalid
status and error handling */
- if (modest_mail_operation_get_error (mail_op) != NULL)
+ if (modest_mail_operation_get_error (mail_op) != NULL) {
modest_mail_operation_execute_error_handler (mail_op);
- else {
+ } else {
if (status == MODEST_MAIL_OPERATION_STATUS_CANCELED)
g_warning ("%s: operation canceled \n", __FUNCTION__);
else
static void
on_cancel_all_foreach (gpointer op, gpointer list)
{
- *((GSList**)list) = g_slist_prepend (*((GSList**)list), MODEST_MAIL_OPERATION (op));
+ GSList **new_list;
+
+ new_list = (GSList**) list;
+ *new_list = g_slist_prepend (*new_list, MODEST_MAIL_OPERATION (op));
}
void
modest_mail_operation_queue_cancel_all (ModestMailOperationQueue *self)
{
ModestMailOperationQueuePrivate *priv;
- GSList* operations_to_cancel;
- GSList* cur;
+ GSList* operations_to_cancel = NULL;
+ GSList* cur = NULL;
g_return_if_fail (MODEST_IS_MAIL_OPERATION_QUEUE (self));
g_mutex_lock (priv->queue_lock);
g_queue_foreach (priv->op_queue, (GFunc) on_cancel_all_foreach, &operations_to_cancel);
g_mutex_unlock (priv->queue_lock);
-
+
/* TODO: Reverse the list, to remove operations in order? */
for(cur = operations_to_cancel; cur != NULL; cur = cur->next) {
- /* This triggers a progress_changed signal in which we remove
- * the operation from the queue. */
- modest_mail_operation_cancel (MODEST_MAIL_OPERATION (cur->data));
+ if (!MODEST_IS_MAIL_OPERATION(cur->data))
+ g_printerr ("modest: cur->data is not a valid mail operation\n");
+ else
+ modest_mail_operation_cancel (MODEST_MAIL_OPERATION (cur->data));
}
g_slist_free(operations_to_cancel);