g_free->xmlFree (account_to_xml): copy xml memory to glib memory when

2003-01-09  Not Zed  <NotZed@Ximian.com>

        * mail-config.c (xml_get_prop): g_free->xmlFree
        (account_to_xml): copy xml memory to glib memory when adding the 0
        on the end of the string.
        (accounts_save): Use slightly different logic with appending to
        the tail of the list, we can't use the &node trick with gslists.
        (accounts_changed): Same here.

svn path=/trunk/; revision=19306
This commit is contained in:
Not Zed
2003-01-09 06:43:31 +00:00
committed by Michael Zucci
parent f255677bd1
commit 9cdee141ad
2 changed files with 29 additions and 16 deletions

View File

@ -1,3 +1,12 @@
2003-01-09 Not Zed <NotZed@Ximian.com>
* mail-config.c (xml_get_prop): g_free->xmlFree
(account_to_xml): copy xml memory to glib memory when adding the 0
on the end of the string.
(accounts_save): Use slightly different logic with appending to
the tail of the list, we can't use the &node trick with gslists.
(accounts_changed): Same here.
2003-01-08 Ettore Perazzoli <ettore@ximian.com> 2003-01-08 Ettore Perazzoli <ettore@ximian.com>
* Makefile.am: Images are now in $(datadir)/evolution/images * Makefile.am: Images are now in $(datadir)/evolution/images

View File

@ -300,7 +300,7 @@ xml_get_prop (xmlNodePtr node, const char *name)
buf = xmlGetProp (node, name); buf = xmlGetProp (node, name);
val = g_strdup (buf); val = g_strdup (buf);
g_free (buf); xmlFree (buf);
return val; return val;
} }
@ -533,14 +533,13 @@ account_to_xml (MailConfigAccount *account)
xmlDocDumpMemory (doc, &xmlbuf, &n); xmlDocDumpMemory (doc, &xmlbuf, &n);
xmlFreeDoc (doc); xmlFreeDoc (doc);
if (!(tmp = realloc (xmlbuf, n + 1))) { /* remap to glib memory */
g_free (xmlbuf); tmp = g_malloc(n+1);
return NULL; memcpy(tmp, xmlbuf, n);
} tmp[n] = 0;
xmlFree(xmlbuf);
xmlbuf[n] = '\0'; return tmp;
return xmlbuf;
} }
static void static void
@ -560,8 +559,7 @@ accounts_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointe
config->accounts = NULL; config->accounts = NULL;
} }
tail = (GSList *) &config->accounts; tail = NULL;
list = gconf_client_get_list (config->gconf, "/apps/evolution/mail/accounts", list = gconf_client_get_list (config->gconf, "/apps/evolution/mail/accounts",
GCONF_VALUE_STRING, NULL); GCONF_VALUE_STRING, NULL);
@ -574,6 +572,9 @@ accounts_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointe
n->data = account; n->data = account;
n->next = NULL; n->next = NULL;
if (tail == NULL)
config->accounts = n;
else
tail->next = n; tail->next = n;
tail = n; tail = n;
} }
@ -591,7 +592,7 @@ accounts_save (void)
char *xmlbuf; char *xmlbuf;
list = NULL; list = NULL;
tail = (GSList *) &list; tail = NULL;
l = config->accounts; l = config->accounts;
while (l != NULL) { while (l != NULL) {
@ -600,6 +601,9 @@ accounts_save (void)
n->data = xmlbuf; n->data = xmlbuf;
n->next = NULL; n->next = NULL;
if (tail == NULL)
list = n;
else
tail->next = n; tail->next = n;
tail = n; tail = n;
} }