diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-10-18 06:16:46 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-10-18 06:16:46 +0800 |
commit | 982357f35cdadf9a823dd1b5a3c0a35bf2ecbdad (patch) | |
tree | 8a625ee1ff79fcfca14383168d6a67088c0413d5 | |
parent | 4ddd273ac4fc4dfa9c0b66e740801b16b691c2c1 (diff) | |
download | gsoc2013-evolution-982357f35cdadf9a823dd1b5a3c0a35bf2ecbdad.tar.gz gsoc2013-evolution-982357f35cdadf9a823dd1b5a3c0a35bf2ecbdad.tar.zst gsoc2013-evolution-982357f35cdadf9a823dd1b5a3c0a35bf2ecbdad.zip |
Make sure the new description isn't the same as the old description
2001-10-17 Jeffrey Stedfast <fejj@ximian.com>
* camel-exception.c (camel_exception_set): Make sure the new
description isn't the same as the old description pointer before
freeing the old one.
(camel_exception_setv): Don't free the old description until we
set the new one this way we can reuse the old description in the
new description.
* providers/local/camel-mbox-folder.c (mbox_append_message): If
errno == EINTR, then we got a user-cancel so set the exception
appropriately so that we don't make the user shit his pants.
svn path=/trunk/; revision=13737
-rw-r--r-- | camel/ChangeLog | 11 | ||||
-rw-r--r-- | camel/camel-exception.c | 13 | ||||
-rw-r--r-- | camel/providers/local/camel-mbox-folder.c | 12 |
3 files changed, 27 insertions, 9 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 9d7314358e..f3e5231836 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,16 @@ 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> + * camel-exception.c (camel_exception_set): Make sure the new + description isn't the same as the old description pointer before + freeing the old one. + (camel_exception_setv): Don't free the old description until we + set the new one this way we can reuse the old description in the + new description. + + * providers/local/camel-mbox-folder.c (mbox_append_message): If + errno == EINTR, then we got a user-cancel so set the exception + appropriately so that we don't make the user shit his pants. + * camel-filter-driver.c (do_copy): Add an optimization for when destination folder is the same as the source folder. diff --git a/camel/camel-exception.c b/camel/camel-exception.c index 3ae8d74f77..75400fa8df 100644 --- a/camel/camel-exception.c +++ b/camel/camel-exception.c @@ -160,9 +160,10 @@ camel_exception_set (CamelException *ex, ex->id = id; - if (ex->desc) - g_free(ex->desc); - ex->desc = g_strdup(desc); + if (desc != ex->desc) { + g_free (ex->desc); + ex->desc = g_strdup (desc); + } CAMEL_EXCEPTION_UNLOCK(exception); } @@ -195,19 +196,21 @@ camel_exception_setv (CamelException *ex, ...) { va_list args; + char *old; if (!ex) return; CAMEL_EXCEPTION_LOCK(exception); - if (ex->desc) - g_free (ex->desc); + old = ex->desc; va_start(args, format); ex->desc = g_strdup_vprintf (format, args); va_end (args); + g_free (old); + ex->id = id; CAMEL_EXCEPTION_UNLOCK(exception); diff --git a/camel/providers/local/camel-mbox-folder.c b/camel/providers/local/camel-mbox-folder.c index c7d09f4af2..0f8d8c9f74 100644 --- a/camel/providers/local/camel-mbox-folder.c +++ b/camel/providers/local/camel-mbox-folder.c @@ -261,10 +261,14 @@ mbox_append_message(CamelFolder *folder, CamelMimeMessage * message, const Camel return; fail_write: - camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, - _("Cannot append message to mbox file: %s: %s"), - lf->folder_path, g_strerror (errno)); - + if (errno == EINTR) + camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL, + _("Mail append cancelled")); + else + camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, + _("Cannot append message to mbox file: %s: %s"), + lf->folder_path, g_strerror (errno)); + if (filter_stream) camel_object_unref(CAMEL_OBJECT(filter_stream)); |