aboutsummaryrefslogtreecommitdiff
path: root/src/pool.c
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2026-04-27 02:35:27 -0400
committerB. Watson <urchlay@slackware.uk>2026-04-27 02:35:27 -0400
commit18c80370b5fed57d151c55d186cb94be0a1e1ec6 (patch)
treee04e18189de4dd301e596ff9069f4571946fab2b /src/pool.c
parent668d47413c3e83c3a2b90da87057b8c0e1d489a4 (diff)
downloadfujinet-chat-18c80370b5fed57d151c55d186cb94be0a1e1ec6.tar.gz
Reclaim a screen's lines when it gets closed.
Diffstat (limited to 'src/pool.c')
-rw-r--r--src/pool.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/pool.c b/src/pool.c
index bd1111d..de79997 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -122,3 +122,19 @@ void add_line(char s) {
screens[s].line_list = p;
screens[s].line_count++;
}
+
+void pool_reclaim_lines(char s) {
+ line_t *p, *q;
+
+ p = screens[s].line_list;
+ while(p != (line_t *)END_MARKER) {
+ q = p;
+ p = p->next;
+ }
+
+ q->next = pools[screens[s].pool].free_list;
+ pools[screens[s].pool].free_list = screens[s].line_list;
+
+ /* theoretically this could be 0, but as a safety net... */
+ screens[s].line_list = (line_t *)END_MARKER;
+}