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
This commit is contained in:
Jeffrey Stedfast
2001-10-17 22:16:46 +00:00
committed by Jeffrey Stedfast
parent 4ddd273ac4
commit 982357f35c
3 changed files with 27 additions and 9 deletions

View File

@ -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.

View File

@ -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);

View File

@ -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));