Mercurial > pidgin
diff libpurple/protocols/msn/notification.c @ 30663:3140627b93e7
Avoid calling xmlnode_from_str twice when parsing the UBX data.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Wed, 09 Dec 2009 21:32:33 +0000 |
parents | ccb05979ab8a |
children | 60688353c010 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/notification.c Wed Dec 09 21:29:29 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Wed Dec 09 21:32:33 2009 +0000 @@ -1625,6 +1625,7 @@ PurpleAccount *account; MsnUser *user; const char *passport; + xmlnode *payloadNode; char *psm_str, *str; CurrentMedia media = {CURRENT_MEDIA_UNKNOWN, NULL, NULL, NULL}; @@ -1642,11 +1643,22 @@ } if (len != 0) { - psm_str = msn_get_psm(cmd->payload,len); + payloadNode = xmlnode_from_str(payload, len); + if (!payloadNode) { + purple_debug_error("msn", "UBX XML parse Error!\n"); + + msn_user_set_statusline(user, NULL); + msn_user_set_currentmedia(user, NULL); + + msn_user_update(user); + return; + } + + psm_str = msn_get_psm(payloadNode); msn_user_set_statusline(user, psm_str); g_free(psm_str); - str = msn_get_currentmedia(cmd->payload, len); + str = msn_get_currentmedia(payloadNode); if (msn_parse_currentmedia(str, &media)) msn_user_set_currentmedia(user, &media); else