diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c index 3681eed3..3a4a4605 100644 --- a/src/command/cmd_ac.c +++ b/src/command/cmd_ac.c @@ -1647,6 +1647,7 @@ cmd_ac_uninit(void) autocomplete_free(plugins_unload_ac); autocomplete_free(plugins_reload_ac); autocomplete_free(script_show_ac); + g_hash_table_destroy(ac_funcs); } static void diff --git a/src/otr/otr.c b/src/otr/otr.c index 1ec5695d..5e99575a 100644 --- a/src/otr/otr.c +++ b/src/otr/otr.c @@ -169,6 +169,7 @@ otr_start_query(void) static void _otr_shutdown(void) { + g_hash_table_destroy(smp_initiators); if (jid) { free(jid); jid = NULL; diff --git a/src/xmpp/blocking.c b/src/xmpp/blocking.c index 0e8c215f..f2a49c7d 100644 --- a/src/xmpp/blocking.c +++ b/src/xmpp/blocking.c @@ -57,9 +57,19 @@ static int _block_remove_result_handler(xmpp_stanza_t* const stanza, void* const static GList* blocked; static Autocomplete blocked_ac; +static void +_blocking_shutdown(void) +{ + if (blocked) { + g_list_free_full(blocked, free); + } + autocomplete_free(blocked_ac); +} + void blocking_request(void) { + prof_add_shutdown_routine(_blocking_shutdown); if (blocked) { g_list_free_full(blocked, free); blocked = NULL; diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c index 8721ff50..0e6a23b3 100644 --- a/src/xmpp/bookmark.c +++ b/src/xmpp/bookmark.c @@ -66,9 +66,19 @@ static int _bookmark_result_id_handler(xmpp_stanza_t* const stanza, void* const static void _bookmark_destroy(Bookmark* bookmark); static void _send_bookmarks(void); +static void +_bookmark_shutdown(void) +{ + if (bookmarks) { + g_hash_table_destroy(bookmarks); + } + autocomplete_free(bookmark_ac); +} + void bookmark_request(void) { + prof_add_shutdown_routine(_bookmark_shutdown); if (bookmarks) { g_hash_table_destroy(bookmarks); } diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c index 4e1e5e2c..8f1cf6d6 100644 --- a/src/xmpp/capabilities.c +++ b/src/xmpp/capabilities.c @@ -72,6 +72,7 @@ static EntityCapabilities* _caps_copy(EntityCapabilities* caps); static void _caps_close(void) { + caps_reset_ver(); free_keyfile(&caps_prof_keyfile); cache = NULL; g_hash_table_destroy(jid_to_ver); diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 388f5bb6..3bf1dc0d 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -347,19 +347,9 @@ message_handlers_init(void) ProfMessage* message_init(void) { - ProfMessage* message = malloc(sizeof(ProfMessage)); + ProfMessage* message = calloc(1, sizeof(ProfMessage)); - message->from_jid = NULL; - message->to_jid = NULL; - message->id = NULL; - message->originid = NULL; - message->stanzaid = NULL; - message->replace_id = NULL; - message->body = NULL; - message->encrypted = NULL; - message->plain = NULL; message->enc = PROF_MSG_ENC_NONE; - message->timestamp = NULL; message->trusted = true; message->type = PROF_MSG_TYPE_UNINITIALIZED;