diff options
author | Not Zed <NotZed@Ximian.com> | 2003-01-09 14:43:31 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2003-01-09 14:43:31 +0800 |
commit | 9cdee141ad068801a54b004dd4e17cd325b64eae (patch) | |
tree | 003c48b4e6b453f16b771369595956c57fe3abbd /mail/mail-config.c | |
parent | f255677bd1b01696cb44acb599855813d2f70eb8 (diff) | |
download | gsoc2013-evolution-9cdee141ad068801a54b004dd4e17cd325b64eae.tar.gz gsoc2013-evolution-9cdee141ad068801a54b004dd4e17cd325b64eae.tar.zst gsoc2013-evolution-9cdee141ad068801a54b004dd4e17cd325b64eae.zip |
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
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index 78bea6fd29..2e8edde06f 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -300,7 +300,7 @@ xml_get_prop (xmlNodePtr node, const char *name) buf = xmlGetProp (node, name); val = g_strdup (buf); - g_free (buf); + xmlFree (buf); return val; } @@ -532,15 +532,14 @@ account_to_xml (MailConfigAccount *account) xmlDocDumpMemory (doc, &xmlbuf, &n); xmlFreeDoc (doc); - - if (!(tmp = realloc (xmlbuf, n + 1))) { - g_free (xmlbuf); - return NULL; - } - - xmlbuf[n] = '\0'; - - return xmlbuf; + + /* remap to glib memory */ + tmp = g_malloc(n+1); + memcpy(tmp, xmlbuf, n); + tmp[n] = 0; + xmlFree(xmlbuf); + + return tmp; } static void @@ -560,8 +559,7 @@ accounts_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointe config->accounts = NULL; } - tail = (GSList *) &config->accounts; - + tail = NULL; list = gconf_client_get_list (config->gconf, "/apps/evolution/mail/accounts", GCONF_VALUE_STRING, NULL); @@ -574,7 +572,10 @@ accounts_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointe n->data = account; n->next = NULL; - tail->next = n; + if (tail == NULL) + config->accounts = n; + else + tail->next = n; tail = n; } @@ -591,7 +592,7 @@ accounts_save (void) char *xmlbuf; list = NULL; - tail = (GSList *) &list; + tail = NULL; l = config->accounts; while (l != NULL) { @@ -599,8 +600,11 @@ accounts_save (void) n = g_slist_alloc (); n->data = xmlbuf; n->next = NULL; - - tail->next = n; + + if (tail == NULL) + list = n; + else + tail->next = n; tail = n; } |