diff options
author | James Booth <boothj5@gmail.com> | 2013-07-31 19:32:58 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2013-07-31 19:32:58 +0100 |
commit | 51b2137705b99ad45a8d4d646da9f3f8e2b3b4db (patch) | |
tree | d59284c75c94c2bdf029aabd1591593ef8f02f77 /src/command | |
parent | 992ee280916f4218b4eefb87bc5a53b27e1cc47b (diff) | |
parent | 7b37f2ace7536ae12f1726819cb0b6224232361c (diff) | |
download | profani-tty-51b2137705b99ad45a8d4d646da9f3f8e2b3b4db.tar.gz |
Merge remote-tracking branch 'dmitry/memleaks' into nextdev
Diffstat (limited to 'src/command')
-rw-r--r-- | src/command/command.c | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/src/command/command.c b/src/command/command.c index e6882553..45086e18 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -1142,7 +1142,6 @@ cmd_execute_default(const char * const inp) ui_current_print_line("You are not currently connected."); } else { message_send_groupchat(inp, recipient); - free(recipient); } break; @@ -1160,7 +1159,6 @@ cmd_execute_default(const char * const inp) } ui_outgoing_msg("me", recipient, inp); - free(recipient); } break; @@ -1170,7 +1168,6 @@ cmd_execute_default(const char * const inp) } else { message_send(inp, recipient); ui_outgoing_msg("me", recipient, inp); - free(recipient); } break; @@ -1184,7 +1181,6 @@ cmd_execute_default(const char * const inp) } else { message_send_duck(inp); ui_duck(inp); - free(recipient); } break; @@ -1192,6 +1188,8 @@ cmd_execute_default(const char * const inp) break; } + free(recipient); + return TRUE; } @@ -1218,7 +1216,9 @@ _cmd_complete_parameters(char *input, int *size) // autocomplete nickname in chat rooms if (ui_current_win_type() == WIN_MUC) { - Autocomplete nick_ac = muc_get_roster_ac(ui_current_recipient()); + char *recipient = ui_current_recipient(); + Autocomplete nick_ac = muc_get_roster_ac(recipient); + free(recipient); if (nick_ac != NULL) { gchar *nick_choices[] = { "/msg", "/info", "/caps", "/status", "/software" } ; @@ -2008,6 +2008,8 @@ _cmd_who(gchar **args, struct cmd_help_t help) ui_room_roster(room, filtered, presence); } + free(room); + // not in groupchat window } else { cons_show(""); @@ -2172,6 +2174,8 @@ _cmd_msg(gchar **args, struct cmd_help_t help) ui_current_print_line("No such participant \"%s\" in room.", usr); } + free(room_name); + return TRUE; } else { @@ -2493,17 +2497,20 @@ _cmd_info(gchar **args, struct cmd_help_t help) jabber_conn_status_t conn_status = jabber_get_connection_status(); win_type_t win_type = ui_current_win_type(); PContact pcontact = NULL; + char *recipient; if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; } + recipient = ui_current_recipient(); + switch (win_type) { case WIN_MUC: if (usr != NULL) { - pcontact = muc_get_participant(ui_current_recipient(), usr); + pcontact = muc_get_participant(recipient, usr); if (pcontact != NULL) { cons_show_info(pcontact); } else { @@ -2517,11 +2524,11 @@ _cmd_info(gchar **args, struct cmd_help_t help) if (usr != NULL) { cons_show("No parameter required for /info in chat."); } else { - pcontact = roster_get_contact(ui_current_recipient()); + pcontact = roster_get_contact(recipient); if (pcontact != NULL) { cons_show_info(pcontact); } else { - cons_show("No such contact \"%s\" in roster.", ui_current_recipient()); + cons_show("No such contact \"%s\" in roster.", recipient); } } break; @@ -2529,7 +2536,7 @@ _cmd_info(gchar **args, struct cmd_help_t help) if (usr != NULL) { ui_current_print_line("No parameter required when in chat."); } else { - Jid *jid = jid_create(ui_current_recipient()); + Jid *jid = jid_create(recipient); pcontact = muc_get_participant(jid->barejid, jid->resourcepart); if (pcontact != NULL) { cons_show_info(pcontact); @@ -2559,6 +2566,8 @@ _cmd_info(gchar **args, struct cmd_help_t help) break; } + free(recipient); + return TRUE; } @@ -2568,6 +2577,7 @@ _cmd_caps(gchar **args, struct cmd_help_t help) jabber_conn_status_t conn_status = jabber_get_connection_status(); win_type_t win_type = ui_current_win_type(); PContact pcontact = NULL; + char *recipient; if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -2578,13 +2588,15 @@ _cmd_caps(gchar **args, struct cmd_help_t help) { case WIN_MUC: if (args[0] != NULL) { - pcontact = muc_get_participant(ui_current_recipient(), args[0]); + recipient = ui_current_recipient(); + pcontact = muc_get_participant(recipient, args[0]); if (pcontact != NULL) { Resource *resource = p_contact_get_resource(pcontact, args[0]); cons_show_caps(args[0], resource); } else { cons_show("No such participant \"%s\" in room.", args[0]); } + free(recipient); } else { cons_show("No nickname supplied to /caps in chat room."); } @@ -2617,10 +2629,15 @@ _cmd_caps(gchar **args, struct cmd_help_t help) if (args[0] != NULL) { cons_show("No parameter needed to /caps when in private chat."); } else { - Jid *jid = jid_create(ui_current_recipient()); - pcontact = muc_get_participant(jid->barejid, jid->resourcepart); - Resource *resource = p_contact_get_resource(pcontact, jid->resourcepart); - cons_show_caps(jid->resourcepart, resource); + recipient = ui_current_recipient(); + Jid *jid = jid_create(recipient); + if (jid) { + pcontact = muc_get_participant(jid->barejid, jid->resourcepart); + Resource *resource = p_contact_get_resource(pcontact, jid->resourcepart); + cons_show_caps(jid->resourcepart, resource); + jid_destroy(jid); + } + free(recipient); } break; default: @@ -2637,6 +2654,7 @@ _cmd_software(gchar **args, struct cmd_help_t help) jabber_conn_status_t conn_status = jabber_get_connection_status(); win_type_t win_type = ui_current_win_type(); PContact pcontact = NULL; + char *recipient; if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -2647,14 +2665,16 @@ _cmd_software(gchar **args, struct cmd_help_t help) { case WIN_MUC: if (args[0] != NULL) { - pcontact = muc_get_participant(ui_current_recipient(), args[0]); + recipient = ui_current_recipient(); + pcontact = muc_get_participant(recipient, args[0]); if (pcontact != NULL) { - Jid *jid = jid_create_from_bare_and_resource(ui_current_recipient(), args[0]); + Jid *jid = jid_create_from_bare_and_resource(recipient, args[0]); iq_send_software_version(jid->fulljid); jid_destroy(jid); } else { cons_show("No such participant \"%s\" in room.", args[0]); } + free(recipient); } else { cons_show("No nickname supplied to /software in chat room."); } @@ -2664,11 +2684,12 @@ _cmd_software(gchar **args, struct cmd_help_t help) if (args[0] != NULL) { Jid *jid = jid_create(args[0]); - if (jid->fulljid == NULL) { + if (jid == NULL || jid->fulljid == NULL) { cons_show("You must provide a full jid to the /software command."); } else { iq_send_software_version(jid->fulljid); } + jid_destroy(jid); } else { cons_show("You must provide a jid to the /software command."); } @@ -2677,7 +2698,9 @@ _cmd_software(gchar **args, struct cmd_help_t help) if (args[0] != NULL) { cons_show("No parameter needed to /software when in private chat."); } else { - iq_send_software_version(ui_current_recipient()); + recipient = ui_current_recipient(); + iq_send_software_version(recipient); + free(recipient); } break; default: |