Mercurial > pidgin.yaz
changeset 25752:c2438ad6e6c1
Error checking and use g_list_foreach
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 21 Nov 2008 20:10:02 +0000 |
parents | 27a9672371f1 |
children | b6cfc5cc6799 |
files | libpurple/protocols/jabber/caps.c |
diffstat | 1 files changed, 15 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/caps.c Fri Nov 21 18:50:43 2008 +0000 +++ b/libpurple/protocols/jabber/caps.c Fri Nov 21 20:10:02 2008 +0000 @@ -154,8 +154,12 @@ const char *type = xmlnode_get_attrib(child, "type"); const char *name = xmlnode_get_attrib(child, "name"); const char *lang = xmlnode_get_attrib(child, "lang"); - - JabberIdentity *id = g_new0(JabberIdentity, 1); + JabberIdentity *id; + + if (!category || !type) + continue; + + id = g_new0(JabberIdentity, 1); id->category = g_strdup(category); id->type = g_strdup(type); id->name = g_strdup(name); @@ -321,13 +325,9 @@ clientinfo->identities = g_list_delete_link(clientinfo->identities,clientinfo->identities); } - while(clientinfo->features) { - char *feat = clientinfo->features->data; - g_free(feat); - - clientinfo->features = g_list_delete_link(clientinfo->features,clientinfo->features); - } - + + g_list_foreach(clientinfo->features, (GFunc)g_free, NULL); + g_list_free(clientinfo->features); g_free(clientinfo); } @@ -694,8 +694,12 @@ const char *type = xmlnode_get_attrib(child, "type"); const char *name = xmlnode_get_attrib(child, "name"); const char *lang = xmlnode_get_attrib(child, "lang"); + JabberIdentity *id; - JabberIdentity *id = g_new0(JabberIdentity, 1); + if (!category || !type) + continue; + + id = g_new0(JabberIdentity, 1); id->category = g_strdup(category); id->type = g_strdup(type); id->name = g_strdup(name); @@ -709,7 +713,7 @@ continue; info->features = g_list_append(info->features, g_strdup(var)); } else if (!strcmp(child->name, "x")) { - if (!strcmp(child->xmlns, "jabber:x:data")) { + if (child->xmlns && !strcmp(child->xmlns, "jabber:x:data")) { /* x-data form */ xmlnode *dataform = xmlnode_copy(child); info->forms = g_list_append(info->forms, dataform);