? camel-mime-tables.c Index: camel-folder-summary.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-folder-summary.c,v retrieving revision 1.149 diff -u -r1.149 camel-folder-summary.c --- camel-folder-summary.c 6 Jul 2006 19:43:46 -0000 1.149 +++ camel-folder-summary.c 9 Jul 2006 16:43:30 -0000 @@ -1339,7 +1339,7 @@ if (len <= 0) { ret = NULL; } else if (len<= tokens_len) { - ret = g_strdup(tokens[len-1]); + ret = tokens[len-1]; } else { io(printf ("Invalid token encountered: %d", len)); *str = NULL; @@ -1853,6 +1853,22 @@ return ci; } +static void +free_token (gchar *token) +{ + gint i=0; + gboolean no=FALSE; + + for (i=0; (i < tokens_len); i++) + { + if (tokens[i] == token) + no = TRUE; + } + + if (!no) + g_free (token); +} + static CamelMessageContentInfo * content_info_load(CamelFolderSummary *s, FILE *in) { @@ -1860,7 +1876,7 @@ char *type, *subtype; guint32 count, i; CamelContentType *ct; - + io(printf("Loading content info\n")); ci = camel_folder_summary_content_info_new(s); @@ -1868,8 +1884,11 @@ camel_folder_summary_decode_token(in, &type); camel_folder_summary_decode_token(in, &subtype); ct = camel_content_type_new(type, subtype); - g_free(type); /* can this be removed? */ - g_free(subtype); + + + free_token (type); /* can this be removed? */ + free_token (subtype); + if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500) goto error; @@ -1882,8 +1901,8 @@ camel_content_type_set_param(ct, name, value); /* TODO: do this so we dont have to double alloc/free */ - g_free(name); - g_free(value); + free_token (name); + free_token (value); } ci->type = ct; @@ -1937,9 +1956,9 @@ content_info_free(CamelFolderSummary *s, CamelMessageContentInfo *ci) { camel_content_type_unref(ci->type); - g_free(ci->id); - g_free(ci->description); - g_free(ci->encoding); + free_token (ci->id); + free_token (ci->description); + free_token (ci->encoding); e_memchunk_free(s->content_info_chunks, ci); }