about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
authorDavid Baer <david.a.baer@gmail.com>2019-03-22 09:10:54 -0400
committerDavid Baer <david.a.baer@gmail.com>2019-03-22 09:10:54 -0400
commita1ec80e1945dce748e681d6fb52b9d54903118b4 (patch)
tree1e147269e7ff51d66d9479a7713e0e2b8ce3ed35 /src/ui
parent447d19aad1cdeb9fb3962803ba3cf4ab24431178 (diff)
downloadprofani-tty-a1ec80e1945dce748e681d6fb52b9d54903118b4.tar.gz
Fix use after free bug
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/core.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index 3e141819..b87e2335 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -812,6 +812,7 @@ void
 ui_room_destroy(const char *const roomjid)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
+    GList *privwins = wins_get_private_chats(roomjid);
     if (window == NULL) {
         log_error("Received room destroy result, but no window open for %s.", roomjid);
     } else {
@@ -820,7 +821,6 @@ ui_room_destroy(const char *const roomjid)
         cons_show("Room destroyed: %s", roomjid);
     }
 
-    GList *privwins = wins_get_private_chats(roomjid);
     GList *curr = privwins;
     while (curr) {
         ProfPrivateWin *privwin = curr->data;
@@ -834,12 +834,12 @@ void
 ui_leave_room(const char *const roomjid)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
+    GList *privwins = wins_get_private_chats(roomjid);
     if (window) {
         int num = wins_get_num(window);
         ui_close_win(num);
     }
 
-    GList *privwins = wins_get_private_chats(roomjid);
     GList *curr = privwins;
     while (curr) {
         ProfPrivateWin *privwin = curr->data;
@@ -855,6 +855,7 @@ ui_room_destroyed(const char *const roomjid, const char *const reason, const cha
     const char *const password)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
+    GList *privwins = wins_get_private_chats(roomjid);
     if (window == NULL) {
         log_error("Received room destroy, but no window open for %s.", roomjid);
     } else {
@@ -877,7 +878,6 @@ ui_room_destroyed(const char *const roomjid, const char *const reason, const cha
         }
     }
 
-    GList *privwins = wins_get_private_chats(roomjid);
     GList *curr = privwins;
     while (curr) {
         ProfPrivateWin *privwin = curr->data;
@@ -891,6 +891,7 @@ void
 ui_room_kicked(const char *const roomjid, const char *const actor, const char *const reason)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
+    GList *privwins = wins_get_private_chats(roomjid);
     if (window == NULL) {
         log_error("Received kick, but no window open for %s.", roomjid);
     } else {
@@ -913,7 +914,6 @@ ui_room_kicked(const char *const roomjid, const char *const actor, const char *c
         g_string_free(message, TRUE);
     }
 
-    GList *privwins = wins_get_private_chats(roomjid);
     GList *curr = privwins;
     while (curr) {
         ProfPrivateWin *privwin = curr->data;
@@ -927,6 +927,7 @@ void
 ui_room_banned(const char *const roomjid, const char *const actor, const char *const reason)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
+    GList *privwins = wins_get_private_chats(roomjid);
     if (window == NULL) {
         log_error("Received ban, but no window open for %s.", roomjid);
     } else {
@@ -949,7 +950,6 @@ ui_room_banned(const char *const roomjid, const char *const actor, const char *c
         g_string_free(message, TRUE);
     }
 
-    GList *privwins = wins_get_private_chats(roomjid);
     GList *curr = privwins;
     while (curr) {
         ProfPrivateWin *privwin = curr->data;