diff --git a/src/sbbs3/terminal.cpp b/src/sbbs3/terminal.cpp
index 69f844453dce07dad218585ce6e0975a063b79e7..579dcc7a47f29a1a148b450d58094036f3ac786e 100644
--- a/src/sbbs3/terminal.cpp
+++ b/src/sbbs3/terminal.cpp
@@ -322,13 +322,17 @@ list_node_t *Terminal::find_hotspot(unsigned x, unsigned y)
 
 uint32_t Terminal::flags(bool raw)
 {
+	// Tuck away pointer to sbbs...
+	sbbs_t *sbbs_p = sbbs;
+
 	if (!raw) {
 		uint32_t newflags = get_flags(sbbs);
 		if (newflags != flags_)
 			update_terminal(sbbs);
 	}
-	// We have potentially destructed ourselves now...
-	return sbbs->term->flags_;
+
+	// We have potentially destructed ourselves now... use the new object.
+	return sbbs_p->term->flags_;
 }
 
 void Terminal::insert_indicator() {