pidgin/pidgin

27c5004a6c65
Parents 1d0c0fab2b72
Children 66604f791698
Re-arrange jabber_buddy_resource_free to avoid use-after-free warning.

scan-build doesn't recognize the effect of g_list_remove, but this seems
a bit cleaner anyway.
--- a/libpurple/protocols/jabber/buddy.c Tue Nov 05 20:21:00 2019 -0500
+++ b/libpurple/protocols/jabber/buddy.c Tue Nov 05 20:21:30 2019 -0500
@@ -74,8 +74,6 @@
{
g_return_if_fail(jbr != NULL);
- jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
-
g_list_free_full(jbr->commands, (GDestroyNotify)jabber_adhoc_commands_free);
g_list_free_full(jbr->caps.exts, g_free);
g_free(jbr->name);
@@ -92,8 +90,7 @@
g_return_if_fail(jb != NULL);
g_free(jb->error_msg);
- while(jb->resources)
- jabber_buddy_resource_free(jb->resources->data);
+ g_list_free_full(jb->resources, (GDestroyNotify)jabber_buddy_resource_free);
g_free(jb);
}
@@ -256,6 +253,7 @@
if(!jbr)
return;
+ jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
jabber_buddy_resource_free(jbr);
}