aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-11-06 04:01:18 +0800
committerMilan Crha <mcrha@redhat.com>2009-11-06 04:01:18 +0800
commitf2e75c5d13a0899b042e7c7f60639be19871f7ca (patch)
treea272e05ba525a1ef777c4ee0d03c35e716de8474 /mail
parent4fd8fbc29a32a2d91b75599f24f49f66002ddb8f (diff)
downloadgsoc2013-evolution-f2e75c5d13a0899b042e7c7f60639be19871f7ca.tar.gz
gsoc2013-evolution-f2e75c5d13a0899b042e7c7f60639be19871f7ca.tar.zst
gsoc2013-evolution-f2e75c5d13a0899b042e7c7f60639be19871f7ca.zip
Bug #598877 - Crash while sending mail, in report_status function
Diffstat (limited to 'mail')
-rw-r--r--mail/mail-ops.c32
-rw-r--r--mail/mail-send-recv.c6
2 files changed, 34 insertions, 4 deletions
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 2de8f6de38..8110ab48db 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -429,6 +429,28 @@ mail_fetch_mail (const gchar *source, gint keep, const gchar *type, CamelOperati
mail_msg_unordered_push (m);
}
+static gchar *
+escape_percent_sign (const gchar *str)
+{
+ GString *res;
+
+ if (!str)
+ return NULL;
+
+ res = g_string_sized_new (strlen (str));
+ while (*str) {
+ if (*str == '%') {
+ g_string_append (res, "%%");
+ } else {
+ g_string_append_c (res, *str);
+ }
+
+ str++;
+ }
+
+ return g_string_free (res, FALSE);
+}
+
/* ********************************************************************** */
/* sending stuff */
/* ** SEND MAIL *********************************************************** */
@@ -502,8 +524,14 @@ mail_send_message (struct _send_queue_msg *m, CamelFolder *queue, const gchar *u
sent_folder_uri = g_strstrip(g_strdup(tmp));
}
- /* let the dialog know the right account it is using; percentage is ignored */
- report_status (m, CAMEL_FILTER_STATUS_ACTION, 0, transport_url ? transport_url : destination);
+ if (transport_url || destination) {
+ gchar *escaped = escape_percent_sign (transport_url ? transport_url : destination);
+
+ /* let the dialog know the right account it is using; percentage is ignored */
+ report_status (m, CAMEL_FILTER_STATUS_ACTION, 0, escaped);
+
+ g_free (escaped);
+ }
/* Check for email sending */
from = (CamelAddress *) camel_internet_address_new ();
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index 6244685842..1495f09ed4 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -359,7 +359,7 @@ format_url (const gchar *internal_url, const gchar *account_name)
else
pretty_url = g_strdup_printf("<b>%s (%s)</b>", account_name, url->protocol);
}
- else {
+ else if (url) {
if (url->host && *url->host)
pretty_url = g_strdup_printf("<b>%s</b>: %s", url->protocol, url->host);
else if (url->path)
@@ -367,7 +367,9 @@ format_url (const gchar *internal_url, const gchar *account_name)
else
pretty_url = g_strdup_printf("<b>%s</b>", url->protocol);
}
- camel_url_free(url);
+
+ if (url)
+ camel_url_free(url);
return pretty_url;
}