From 24f283e96026bcdc51d0f92e3125e09d3b53efc5 Mon Sep 17 00:00:00 2001
From: James Booth <boothj5@gmail.com>
Date: Sun, 1 Nov 2015 23:45:54 +0000
Subject: mucwin_occupant_offline takes ProfMucWin

---
 src/event/server_events.c    |  5 +++--
 src/ui/mucwin.c              | 12 +++++-------
 src/ui/ui.h                  |  2 +-
 tests/unittests/ui/stub_ui.c |  2 +-
 4 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/event/server_events.c b/src/event/server_events.c
index bfd8bdb3..bee0e949 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -485,8 +485,9 @@ sv_ev_room_occupant_offline(const char *const room, const char *const nick,
     muc_roster_remove(room, nick);
 
     char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
-    if (g_strcmp0(muc_status_pref, "none") != 0) {
-        mucwin_occupant_offline(room, nick);
+    ProfMucWin *mucwin = wins_get_muc(room);
+    if (mucwin && (g_strcmp0(muc_status_pref, "none") != 0)) {
+        mucwin_occupant_offline(mucwin, nick);
     }
     prefs_free_string(muc_status_pref);
     occupantswin_occupants(room);
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c
index 5edc6a8d..f8bf77e2 100644
--- a/src/ui/mucwin.c
+++ b/src/ui/mucwin.c
@@ -232,14 +232,12 @@ mucwin_roster(ProfMucWin *mucwin, GList *roster, const char *const presence)
 }
 
 void
-mucwin_occupant_offline(const char *const roomjid, const char *const nick)
+mucwin_occupant_offline(ProfMucWin *mucwin, const char *const nick)
 {
-    ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
-    if (window == NULL) {
-        log_error("Received offline presence for room participant %s, but no window open for %s.", nick, roomjid);
-    } else {
-        win_vprint(window, '!', 0, NULL, 0, THEME_OFFLINE, "", "<- %s has left the room.", nick);
-    }
+    assert(mucwin != NULL);
+
+    ProfWin *window = (ProfWin*)mucwin;
+    win_vprint(window, '!', 0, NULL, 0, THEME_OFFLINE, "", "<- %s has left the room.", nick);
 }
 
 void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 61cf8745..6b225679 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -188,7 +188,7 @@ void mucwin_occupant_kicked(const char *const roomjid, const char *const nick, c
 void mucwin_occupant_banned(const char *const roomjid, const char *const nick, const char *const actor,
     const char *const reason);
 void mucwin_broadcast(const char *const roomjid, const char *const message);
-void mucwin_occupant_offline(const char *const roomjid, const char *const nick);
+void mucwin_occupant_offline(ProfMucWin *mucwin, const char *const nick);
 void mucwin_occupant_online(const char *const roomjid, const char *const nick, const char *const roles,
     const char *const affiliation, const char *const show, const char *const status);
 void mucwin_occupant_nick_change(const char *const roomjid, const char *const old_nick, const char *const nick);
diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c
index 5609b3a9..b92aeca9 100644
--- a/tests/unittests/ui/stub_ui.c
+++ b/tests/unittests/ui/stub_ui.c
@@ -227,7 +227,7 @@ void mucwin_occupant_banned(const char * const roomjid, const char * const nick,
 void ui_leave_room(const char * const roomjid) {}
 void mucwin_broadcast(const char * const roomjid,
     const char * const message) {}
-void mucwin_occupant_offline(const char * const roomjid, const char * const nick) {}
+void mucwin_occupant_offline(ProfMucWin *mucwin, const char * const nick) {}
 void mucwin_occupant_online(const char * const roomjid, const char * const nick, const char * const roles,
     const char * const affiliation, const char * const show, const char * const status) {}
 void mucwin_occupant_nick_change(const char * const roomjid,
-- 
cgit 1.4.1-2-gfad0