aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-medium.c
diff options
context:
space:
mode:
authorNotZed <NotZed@HelixCode.com>2000-02-29 07:26:13 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-02-29 07:26:13 +0800
commitf81ae069e4ef8a49f826c458c7b80996cec2036a (patch)
tree62dd47440cc05997689aee763d7fcc7abfc8c778 /camel/camel-medium.c
parentbbbee6ba116f1df65514776657e86bc6182a0f56 (diff)
downloadgsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar.gz
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar.bz2
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar.lz
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar.xz
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.tar.zst
gsoc2013-evolution-f81ae069e4ef8a49f826c458c7b80996cec2036a.zip
Fix a bunch of serious small bugs.
2000-02-28 NotZed <NotZed@HelixCode.com> * camel-mime-part.c (_parse_header_pair): Dont free this either. * camel-medium.c (_remove_header): Ugh, dont free the header before we actually remove it. (_add_header): Ugh, dont free hashtable entries which may be duplicated (hash_insert _will_ reference that memory). * string-utils.c (string_trim): Trimming a 0-length string is not an error. * camel-mime-message.c (_parse_header_pair): Fixed very broken memory handling of header_name/value. * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Initialise end_of_last_message always. (camel_mbox_copy_file_chunk): Stop trying to read if we run out of data, rather than looping forever. * providers/mbox/camel-mbox-folder.c (_init): Set search cap on. (_open): Call parent class to perform open. Remove folder-open check to parent instead. (_create): open takes a creation mask, dont use umask to try and set the open mode. (_delete): Dont bother checking folder==NULL, its already been checked on the external interface (changed to an assertion, this would have to be a camel bug). (_delete_messages): Likewise. (_create): Ditto. (_init): Dont go and clear all the paths and shit that the parent open just setup for us. (_delete_messages): Get rid of more umask stuff. (_append_message): Make sure we pass file mode to open with create. (_append_message): Cleaned up some indenting to make it readable. svn path=/trunk/; revision=1985
Diffstat (limited to 'camel/camel-medium.c')
-rw-r--r--camel/camel-medium.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/camel/camel-medium.c b/camel/camel-medium.c
index 1410545c5e..e66e32e543 100644
--- a/camel/camel-medium.c
+++ b/camel/camel-medium.c
@@ -150,11 +150,15 @@ _add_header (CamelMedium *medium, gchar *header_name, gchar *header_value)
header_exists = g_hash_table_lookup_extended (medium->headers, header_name,
(gpointer *) &old_header_name,
(gpointer *) &old_header_value);
+ /* ghashtables actually dont duplicate key pointers on existing fields,
+ just remove the old one first always (avoiding this assumption) */
if (header_exists) {
+ g_hash_table_remove (medium->headers, old_header_name);
+#if 1
g_free (old_header_name);
g_free (old_header_value);
+#endif
}
-
g_hash_table_insert (medium->headers, g_strdup (header_name),
g_strdup (header_value));
}
@@ -182,12 +186,11 @@ _remove_header (CamelMedium *medium, const gchar *header_name)
(gpointer *) &old_header_name,
(gpointer *) &old_header_value);
if (header_exists) {
+ g_hash_table_remove (medium->headers, header_name);
+
g_free (old_header_name);
g_free (old_header_value);
}
-
- g_hash_table_remove (medium->headers, header_name);
-
}
void