AmendHub

Download:

jcs

/

subtext

/

amendments

/

609

focusable: Make destroy_focusable take a pointer like xfree

Just make the API nullify the focusable rather than relying on the
caller to do it.

jcs made amendment 609 9 months ago
--- console.c Sat Dec 6 17:55:52 2025 +++ console.c Sat Dec 6 21:14:53 2025 @@ -355,7 +355,7 @@ console_close_from_session(struct session *session) { struct console *console = (struct console *)session->cookie; session_logf(session, "Closing console session"); - destroy_focusable(console->focusable); + destroy_focusable(&console->focusable); xfree(&console); } --- focusable.c Wed Mar 1 16:48:54 2023 +++ focusable.c Sat Dec 6 21:18:09 2025 @@ -83,8 +83,9 @@ show_focusable(struct focusable *focusable) } void -destroy_focusable(struct focusable *focusable) +destroy_focusable(struct focusable **focusablep) { + struct focusable *focusable = *focusablep; short n; if (focusable->visible) @@ -109,7 +110,7 @@ destroy_focusable(struct focusable *focusable) if (nfocusables && focusables[0]->visible) SelectWindow(focusables[0]->win); - /* focusable is now bogus */ + *focusablep = NULL; } void --- focusable.h Wed Mar 1 16:49:32 2023 +++ focusable.h Sat Dec 6 21:18:26 2025 @@ -42,7 +42,7 @@ extern short nfocusables; struct focusable * find_focusable(GrafPtr win); bool add_focusable(struct focusable *focusable); void show_focusable(struct focusable *focusable); -void destroy_focusable(struct focusable *focusable); +void destroy_focusable(struct focusable **focusablep); void hide_focusable(struct focusable *focusable); #endif \ No newline at end of file --- logger.c Wed Oct 22 17:31:54 2025 +++ logger.c Sat Dec 6 21:16:14 2025 @@ -167,7 +167,7 @@ logger_resume(struct focusable *focusable, EventRecord void logger_close(struct focusable *focusable, EventRecord *event) { - destroy_focusable(focusable); + destroy_focusable(&focusable); xfree(&logger->buffered_logs); xfree(&logger); }