mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Merge pull request #1130 from profanity-im/fix/memleaks
Fix memory leaks
This commit is contained in:
commit
7c119aa9bf
@ -305,6 +305,7 @@ omemo_on_disconnect(void)
|
|||||||
g_key_file_free(omemo_ctx.trust_keyfile);
|
g_key_file_free(omemo_ctx.trust_keyfile);
|
||||||
g_string_free(omemo_ctx.sessions_filename, TRUE);
|
g_string_free(omemo_ctx.sessions_filename, TRUE);
|
||||||
g_key_file_free(omemo_ctx.sessions_keyfile);
|
g_key_file_free(omemo_ctx.sessions_keyfile);
|
||||||
|
_g_hash_table_free(omemo_ctx.session_store);
|
||||||
g_string_free(omemo_ctx.known_devices_filename, TRUE);
|
g_string_free(omemo_ctx.known_devices_filename, TRUE);
|
||||||
g_key_file_free(omemo_ctx.known_devices_keyfile);
|
g_key_file_free(omemo_ctx.known_devices_keyfile);
|
||||||
}
|
}
|
||||||
@ -386,6 +387,7 @@ omemo_start_sessions(void)
|
|||||||
const char *jid = p_contact_barejid(contact);
|
const char *jid = p_contact_barejid(contact);
|
||||||
omemo_start_session(jid);
|
omemo_start_session(jid);
|
||||||
}
|
}
|
||||||
|
g_slist_free(contacts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,6 +203,7 @@ _create_tab(const int win, win_type_t wintype, char *identifier, gboolean highli
|
|||||||
} else {
|
} else {
|
||||||
tab->display_name = strdup(tab->identifier);
|
tab->display_name = strdup(tab->identifier);
|
||||||
}
|
}
|
||||||
|
prefs_free_string(pref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,21 +453,27 @@ _status_bar_draw_maintext(int pos)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean stop = FALSE;
|
||||||
|
|
||||||
if (statusbar->fulljid) {
|
if (statusbar->fulljid) {
|
||||||
char *pref = prefs_get_string(PREF_STATUSBAR_SELF);
|
char *pref = prefs_get_string(PREF_STATUSBAR_SELF);
|
||||||
|
|
||||||
if (g_strcmp0(pref, "off") == 0) {
|
if (g_strcmp0(pref, "off") == 0) {
|
||||||
return;
|
stop = true;
|
||||||
}
|
} else if (g_strcmp0(pref, "user") == 0) {
|
||||||
if (g_strcmp0(pref, "user") == 0) {
|
|
||||||
Jid *jidp = jid_create(statusbar->fulljid);
|
Jid *jidp = jid_create(statusbar->fulljid);
|
||||||
mvwprintw(statusbar_win, 0, pos, jidp->localpart);
|
mvwprintw(statusbar_win, 0, pos, jidp->localpart);
|
||||||
jid_destroy(jidp);
|
jid_destroy(jidp);
|
||||||
return;
|
stop = true;
|
||||||
}
|
} else if (g_strcmp0(pref, "barejid") == 0) {
|
||||||
if (g_strcmp0(pref, "barejid") == 0) {
|
|
||||||
Jid *jidp = jid_create(statusbar->fulljid);
|
Jid *jidp = jid_create(statusbar->fulljid);
|
||||||
mvwprintw(statusbar_win, 0, pos, jidp->barejid);
|
mvwprintw(statusbar_win, 0, pos, jidp->barejid);
|
||||||
jid_destroy(jidp);
|
jid_destroy(jidp);
|
||||||
|
stop = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
prefs_free_string(pref);
|
||||||
|
if (stop) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mvwprintw(statusbar_win, 0, pos, statusbar->fulljid);
|
mvwprintw(statusbar_win, 0, pos, statusbar->fulljid);
|
||||||
@ -556,9 +563,11 @@ _display_name(StatusBarTab *tab)
|
|||||||
} else {
|
} else {
|
||||||
fullname = strdup(tab->identifier);
|
fullname = strdup(tab->identifier);
|
||||||
}
|
}
|
||||||
|
prefs_free_string(pref);
|
||||||
} else if (tab->window_type == WIN_CONFIG) {
|
} else if (tab->window_type == WIN_CONFIG) {
|
||||||
char *pref = prefs_get_string(PREF_STATUSBAR_ROOM);
|
char *pref = prefs_get_string(PREF_STATUSBAR_ROOM);
|
||||||
GString *display_str = g_string_new("");
|
GString *display_str = g_string_new("");
|
||||||
|
|
||||||
if (g_strcmp0("room", pref) == 0) {
|
if (g_strcmp0("room", pref) == 0) {
|
||||||
Jid *jidp = jid_create(tab->identifier);
|
Jid *jidp = jid_create(tab->identifier);
|
||||||
g_string_append(display_str, jidp->localpart);
|
g_string_append(display_str, jidp->localpart);
|
||||||
@ -566,6 +575,8 @@ _display_name(StatusBarTab *tab)
|
|||||||
} else {
|
} else {
|
||||||
g_string_append(display_str, tab->identifier);
|
g_string_append(display_str, tab->identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prefs_free_string(pref);
|
||||||
g_string_append(display_str, " conf");
|
g_string_append(display_str, " conf");
|
||||||
char *result = strdup(display_str->str);
|
char *result = strdup(display_str->str);
|
||||||
g_string_free(display_str, TRUE);
|
g_string_free(display_str, TRUE);
|
||||||
@ -585,6 +596,7 @@ _display_name(StatusBarTab *tab)
|
|||||||
} else {
|
} else {
|
||||||
fullname = strdup(tab->identifier);
|
fullname = strdup(tab->identifier);
|
||||||
}
|
}
|
||||||
|
prefs_free_string(pref);
|
||||||
} else {
|
} else {
|
||||||
fullname = strdup("window");
|
fullname = strdup("window");
|
||||||
}
|
}
|
||||||
|
@ -318,15 +318,13 @@ _bookmark_result_id_handler(xmpp_stanza_t *const stanza, void *const userdata)
|
|||||||
static void
|
static void
|
||||||
_bookmark_destroy(Bookmark *bookmark)
|
_bookmark_destroy(Bookmark *bookmark)
|
||||||
{
|
{
|
||||||
if (!bookmark) {
|
if (bookmark) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(bookmark->barejid);
|
free(bookmark->barejid);
|
||||||
free(bookmark->nick);
|
free(bookmark->nick);
|
||||||
free(bookmark->password);
|
free(bookmark->password);
|
||||||
free(bookmark);
|
free(bookmark);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_send_bookmarks(void)
|
_send_bookmarks(void)
|
||||||
|
@ -251,6 +251,14 @@ iq_handlers_init(void)
|
|||||||
rooms_cache = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)xmpp_stanza_release);
|
rooms_cache = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)xmpp_stanza_release);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
iq_handlers_clear()
|
||||||
|
{
|
||||||
|
if (id_handlers) {
|
||||||
|
g_hash_table_remove_all(id_handlers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
iq_id_handler_add(const char *const id, ProfIqCallback func, ProfIqFreeCallback free_func, void *userdata)
|
iq_id_handler_add(const char *const id, ProfIqCallback func, ProfIqFreeCallback free_func, void *userdata)
|
||||||
{
|
{
|
||||||
|
@ -178,6 +178,14 @@ message_handlers_init(void)
|
|||||||
pubsub_event_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
|
pubsub_event_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
message_handlers_clear(void)
|
||||||
|
{
|
||||||
|
if (pubsub_event_handlers) {
|
||||||
|
g_hash_table_remove_all(pubsub_event_handlers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata)
|
message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata)
|
||||||
{
|
{
|
||||||
|
@ -39,6 +39,7 @@ typedef int(*ProfMessageCallback)(xmpp_stanza_t *const stanza, void *const userd
|
|||||||
typedef void(*ProfMessageFreeCallback)(void *userdata);
|
typedef void(*ProfMessageFreeCallback)(void *userdata);
|
||||||
|
|
||||||
void message_handlers_init(void);
|
void message_handlers_init(void);
|
||||||
|
void message_handlers_clear(void);
|
||||||
void message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata);
|
void message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -213,8 +213,10 @@ session_disconnect(void)
|
|||||||
accounts_set_last_activity(session_get_account_name());
|
accounts_set_last_activity(session_get_account_name());
|
||||||
|
|
||||||
iq_rooms_cache_clear();
|
iq_rooms_cache_clear();
|
||||||
|
iq_handlers_clear();
|
||||||
|
|
||||||
connection_disconnect();
|
connection_disconnect();
|
||||||
|
message_handlers_clear();
|
||||||
|
|
||||||
connection_clear_data();
|
connection_clear_data();
|
||||||
chat_sessions_clear();
|
chat_sessions_clear();
|
||||||
|
@ -169,6 +169,7 @@ void iq_enable_carbons(void);
|
|||||||
void iq_disable_carbons(void);
|
void iq_disable_carbons(void);
|
||||||
void iq_send_software_version(const char *const fulljid);
|
void iq_send_software_version(const char *const fulljid);
|
||||||
void iq_rooms_cache_clear(void);
|
void iq_rooms_cache_clear(void);
|
||||||
|
void iq_handlers_clear();
|
||||||
void iq_room_list_request(gchar *conferencejid, gchar *filter);
|
void iq_room_list_request(gchar *conferencejid, gchar *filter);
|
||||||
void iq_disco_info_request(gchar *jid);
|
void iq_disco_info_request(gchar *jid);
|
||||||
void iq_disco_items_request(gchar *jid);
|
void iq_disco_items_request(gchar *jid);
|
||||||
|
@ -59,6 +59,7 @@ void cmd_otr_log_on_enables_logging(void **state)
|
|||||||
|
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
assert_string_equal("on", pref_otr_log);
|
assert_string_equal("on", pref_otr_log);
|
||||||
|
prefs_free_string(pref_otr_log);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_otr_log_on_shows_warning_when_chlog_disabled(void **state)
|
void cmd_otr_log_on_shows_warning_when_chlog_disabled(void **state)
|
||||||
@ -87,6 +88,7 @@ void cmd_otr_log_off_disables_logging(void **state)
|
|||||||
|
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
assert_string_equal("off", pref_otr_log);
|
assert_string_equal("off", pref_otr_log);
|
||||||
|
prefs_free_string(pref_otr_log);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_otr_redact_redacts_logging(void **state)
|
void cmd_otr_redact_redacts_logging(void **state)
|
||||||
@ -102,6 +104,7 @@ void cmd_otr_redact_redacts_logging(void **state)
|
|||||||
|
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
assert_string_equal("redact", pref_otr_log);
|
assert_string_equal("redact", pref_otr_log);
|
||||||
|
prefs_free_string(pref_otr_log);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_otr_log_redact_shows_warning_when_chlog_disabled(void **state)
|
void cmd_otr_log_redact_shows_warning_when_chlog_disabled(void **state)
|
||||||
|
@ -67,6 +67,7 @@ void cmd_presence_console_sets_all(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_console_sets_online(void **state)
|
void cmd_presence_console_sets_online(void **state)
|
||||||
@ -81,6 +82,7 @@ void cmd_presence_console_sets_online(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("online", setting);
|
assert_string_equal("online", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_console_sets_none(void **state)
|
void cmd_presence_console_sets_none(void **state)
|
||||||
@ -95,6 +97,7 @@ void cmd_presence_console_sets_none(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("none", setting);
|
assert_string_equal("none", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_chat_sets_all(void **state)
|
void cmd_presence_chat_sets_all(void **state)
|
||||||
@ -109,6 +112,7 @@ void cmd_presence_chat_sets_all(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_chat_sets_online(void **state)
|
void cmd_presence_chat_sets_online(void **state)
|
||||||
@ -123,6 +127,7 @@ void cmd_presence_chat_sets_online(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("online", setting);
|
assert_string_equal("online", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_chat_sets_none(void **state)
|
void cmd_presence_chat_sets_none(void **state)
|
||||||
@ -137,6 +142,7 @@ void cmd_presence_chat_sets_none(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("none", setting);
|
assert_string_equal("none", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_room_sets_all(void **state)
|
void cmd_presence_room_sets_all(void **state)
|
||||||
@ -151,6 +157,7 @@ void cmd_presence_room_sets_all(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_room_sets_online(void **state)
|
void cmd_presence_room_sets_online(void **state)
|
||||||
@ -165,6 +172,7 @@ void cmd_presence_room_sets_online(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("online", setting);
|
assert_string_equal("online", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_presence_room_sets_none(void **state)
|
void cmd_presence_room_sets_none(void **state)
|
||||||
@ -179,4 +187,5 @@ void cmd_presence_room_sets_none(void **state)
|
|||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("none", setting);
|
assert_string_equal("none", setting);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ void statuses_console_defaults_to_all(void **state)
|
|||||||
|
|
||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void statuses_chat_defaults_to_all(void **state)
|
void statuses_chat_defaults_to_all(void **state)
|
||||||
@ -22,6 +23,7 @@ void statuses_chat_defaults_to_all(void **state)
|
|||||||
|
|
||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void statuses_muc_defaults_to_all(void **state)
|
void statuses_muc_defaults_to_all(void **state)
|
||||||
@ -30,4 +32,5 @@ void statuses_muc_defaults_to_all(void **state)
|
|||||||
|
|
||||||
assert_non_null(setting);
|
assert_non_null(setting);
|
||||||
assert_string_equal("all", setting);
|
assert_string_equal("all", setting);
|
||||||
|
prefs_free_string(setting);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user