Mercurial > pidgin
changeset 27148:0405276c6698
Fix a lost reference when we only fetch an unknown ext.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 22 Jun 2009 22:46:09 +0000 |
parents | ef9e68020265 |
children | e3907cfaeb02 |
files | libpurple/protocols/jabber/caps.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/caps.c Mon Jun 22 21:31:54 2009 +0000 +++ b/libpurple/protocols/jabber/caps.c Mon Jun 22 22:46:09 2009 +0000 @@ -589,9 +589,7 @@ } userdata = g_new0(jabber_caps_cbplususerdata, 1); - /* This ref is given to fetching the basic node#ver info if we need it - * or unrefed at the bottom of this function */ - cbplususerdata_ref(userdata); + /* We start out with 0 references. Every query takes one */ userdata->cb = cb; userdata->cb_data = user_data; userdata->who = g_strdup(who); @@ -617,6 +615,8 @@ g_free(nodever); xmlnode_set_attrib(iq->node, "to", who); + cbplususerdata_ref(userdata); + jabber_iq_set_callback(iq, jabber_caps_client_iqcb, userdata); jabber_iq_send(iq); } @@ -669,7 +669,11 @@ } if (userdata->info && userdata->extOutstanding == 0) { + /* We have everything we need right now */ jabber_caps_get_info_complete(userdata); + + /* We need to destroy the structure, but it has 0 refs, so fake it. */ + userdata->ref = 1; cbplususerdata_unref(userdata); } }