diff --git a/TODO_045 b/TODO_045 index 72adacdb..d98695a7 100644 --- a/TODO_045 +++ b/TODO_045 @@ -1,9 +1,8 @@ Test with valgrind using new commands - /affiliation - /role /occupants /privileges /ping + fix muc roster leak Update website help diff --git a/src/command/command.c b/src/command/command.c index da908c02..2c3bd3ba 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -2074,10 +2074,13 @@ _bookmark_autocomplete(char *input, int *size) } g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } + g_strfreev(args); + found = autocomplete_param_with_func(input, size, "/bookmark remove", bookmark_find); if (found != NULL) { return found; @@ -2248,10 +2251,13 @@ _otr_autocomplete(char *input, int *size) found = autocomplete_param_with_func(input, size, beginning->str, roster_find_contact); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } + g_strfreev(args); + found = autocomplete_param_with_ac(input, size, "/otr policy", otr_policy_ac, TRUE); if (found != NULL) { return found; @@ -2461,10 +2467,13 @@ _affiliation_autocomplete(char *input, int *size) result = autocomplete_param_with_ac(input, size, beginning->str, jid_ac, TRUE); g_string_free(beginning, TRUE); if (result != NULL) { + g_strfreev(args); return result; } } + g_strfreev(args); + result = autocomplete_param_with_ac(input, size, "/affiliation set", affiliation_ac, TRUE); if (result != NULL) { return result; @@ -2503,10 +2512,13 @@ _role_autocomplete(char *input, int *size) result = autocomplete_param_with_ac(input, size, beginning->str, nick_ac, TRUE); g_string_free(beginning, TRUE); if (result != NULL) { + g_strfreev(args); return result; } } + g_strfreev(args); + result = autocomplete_param_with_ac(input, size, "/role set", role_ac, TRUE); if (result != NULL) { return result; @@ -2592,10 +2604,13 @@ _connect_autocomplete(char *input, int *size) found = autocomplete_param_with_ac(input, size, beginning->str, connect_property_ac, TRUE); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } + g_strfreev(args); + found = autocomplete_param_with_func(input, size, "/connect", accounts_find_enabled); if (found != NULL) { return found; @@ -2631,10 +2646,13 @@ _join_autocomplete(char *input, int *size) found = autocomplete_param_with_ac(input, size, beginning->str, join_property_ac, TRUE); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } + g_strfreev(args); + return NULL; } @@ -2656,12 +2674,14 @@ _account_autocomplete(char *input, int *size) found = autocomplete_param_with_ac(input, size, beginning->str, otr_policy_ac, TRUE); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } else { found = autocomplete_param_with_ac(input, size, beginning->str, account_set_ac, TRUE); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } @@ -2673,6 +2693,7 @@ _account_autocomplete(char *input, int *size) found = autocomplete_param_with_ac(input, size, beginning->str, account_clear_ac, TRUE); g_string_free(beginning, TRUE); if (found != NULL) { + g_strfreev(args); return found; } } diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index 89f0c8ed..4717f6e7 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -974,6 +974,7 @@ _room_affiliation_list_result_handler(xmpp_conn_t * const conn, xmpp_stanza_t * handle_room_affiliation_list(from, affiliation, jids); free(affiliation); + g_slist_free(jids); return 0; } @@ -1019,6 +1020,7 @@ _room_role_list_result_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const s handle_room_role_list(from, role, nicks); free(role); + g_slist_free(nicks); return 0; }