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);
}