diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ui/mucwin.c | 40 | ||||
-rw-r--r-- | src/ui/ui.h | 2 | ||||
-rw-r--r-- | src/xmpp/iq.c | 5 |
3 files changed, 25 insertions, 22 deletions
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c index e598c50b..d3d29ee0 100644 --- a/src/ui/mucwin.c +++ b/src/ui/mucwin.c @@ -629,32 +629,32 @@ mucwin_role_list_error(ProfMucWin *mucwin, const char *const role, const char *c } void -mucwin_handle_role_list(const char *const roomjid, const char *const role, GSList *nicks) +mucwin_handle_role_list(ProfMucWin *mucwin, const char *const role, GSList *nicks) { - ProfWin *window = (ProfWin*)wins_get_muc(roomjid); - if (window) { - if (nicks) { - win_vprint(window, '!', 0, NULL, 0, 0, "", "Role: %s", role); - GSList *curr_nick = nicks; - while (curr_nick) { - char *nick = curr_nick->data; - Occupant *occupant = muc_roster_item(roomjid, nick); - if (occupant) { - if (occupant->jid) { - win_vprint(window, '!', 0, NULL, 0, 0, "", " %s (%s)", nick, occupant->jid); - } else { - win_vprint(window, '!', 0, NULL, 0, 0, "", " %s", nick); - } + assert(mucwin != NULL); + + ProfWin *window = (ProfWin*)mucwin; + if (nicks) { + win_vprint(window, '!', 0, NULL, 0, 0, "", "Role: %s", role); + GSList *curr_nick = nicks; + while (curr_nick) { + char *nick = curr_nick->data; + Occupant *occupant = muc_roster_item(mucwin->roomjid, nick); + if (occupant) { + if (occupant->jid) { + win_vprint(window, '!', 0, NULL, 0, 0, "", " %s (%s)", nick, occupant->jid); } else { win_vprint(window, '!', 0, NULL, 0, 0, "", " %s", nick); } - curr_nick = g_slist_next(curr_nick); + } else { + win_vprint(window, '!', 0, NULL, 0, 0, "", " %s", nick); } - win_print(window, '!', 0, NULL, 0, 0, "", ""); - } else { - win_vprint(window, '!', 0, NULL, 0, 0, "", "No occupants found with role: %s", role); - win_print(window, '!', 0, NULL, 0, 0, "", ""); + curr_nick = g_slist_next(curr_nick); } + win_print(window, '!', 0, NULL, 0, 0, "", ""); + } else { + win_vprint(window, '!', 0, NULL, 0, 0, "", "No occupants found with role: %s", role); + win_print(window, '!', 0, NULL, 0, 0, "", ""); } } diff --git a/src/ui/ui.h b/src/ui/ui.h index 57741bbc..fae8491e 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -204,7 +204,7 @@ void mucwin_affiliation_set_error(const char *const roomjid, const char *const j void mucwin_role_set_error(const char *const roomjid, const char *const nick, const char *const role, const char *const error); void mucwin_role_list_error(ProfMucWin *mucwin, const char *const role, const char *const error); -void mucwin_handle_role_list(const char *const roomjid, const char *const role, GSList *nicks); +void mucwin_handle_role_list(ProfMucWin *mucwin, const char *const role, GSList *nicks); void mucwin_kick_error(ProfMucWin *mucwin, const char *const nick, const char *const error); // xml console diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index e62e49bf..4b3d9dcd 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -1422,7 +1422,10 @@ _room_role_list_result_handler(xmpp_conn_t *const conn, xmpp_stanza_t *const sta } } - mucwin_handle_role_list(from, role, nicks); + ProfMucWin *mucwin = wins_get_muc(from); + if (mucwin) { + mucwin_handle_role_list(mucwin, role, nicks); + } free(role); g_slist_free(nicks); |