# HG changeset patch # User Paul Aurich # Date 1239778668 0 # Node ID ba99ee5199261551504ceb15c760b81f478a1ced # Parent 9fb8d8d9783a8b104824ce565698eea2e27e5804 Do not call the non-destroy prpl-ops when the connection is gone. diff -r 9fb8d8d9783a -r ba99ee519926 libpurple/disco.c --- a/libpurple/disco.c Wed Apr 15 04:38:28 2009 +0000 +++ b/libpurple/disco.c Wed Apr 15 06:57:48 2009 +0000 @@ -144,7 +144,9 @@ purple_disco_list_destroy(list); } -void purple_disco_list_service_add(PurpleDiscoList *list, PurpleDiscoService *service, PurpleDiscoService *parent) +void purple_disco_list_service_add(PurpleDiscoList *list, + PurpleDiscoService *service, + PurpleDiscoService *parent) { g_return_if_fail(list != NULL); g_return_if_fail(service != NULL); @@ -194,8 +196,14 @@ void purple_disco_cancel_get_list(PurpleDiscoList *list) { + PurpleConnection *pc; + g_return_if_fail(list != NULL); + pc = purple_account_get_connection(list->account); + + g_return_if_fail(pc != NULL); + if (list->ops.cancel_cb) list->ops.cancel_cb(list); @@ -205,11 +213,16 @@ void purple_disco_service_expand(PurpleDiscoService *service) { PurpleDiscoList *list; + PurpleConnection *pc; g_return_if_fail(service != NULL); - g_return_if_fail((service->flags & PURPLE_DISCO_BROWSE) == PURPLE_DISCO_BROWSE); + g_return_if_fail((service->flags & PURPLE_DISCO_BROWSE)); list = service->list; + pc = purple_account_get_connection(list->account); + + g_return_if_fail(pc != NULL); + purple_disco_list_set_in_progress(list, TRUE); if (list->ops.expand_cb) @@ -376,6 +389,7 @@ void purple_disco_list_set_expand_func(PurpleDiscoList *list, PurpleDiscoServiceExpandFunc cb) { g_return_if_fail(list != NULL); + list->ops.expand_cb = cb; }