from current_kboard to KB, which is freed.
2001-04-19 Gerd Moellmann <gerd@gnu.org>
+ * keyboard.c (delete_kboard): Prevent a dangling reference
+ from current_kboard to KB, which is freed.
+
* process.c (wait_reading_process_input): Call
record_asynch_buffer_change after running timers, to make
read_key_sequence aware of buffer changes from under it.
}
#ifdef MULTI_KBOARD
+
+/* Free KB and memory referenced from it. */
+
void
delete_kboard (kb)
- KBOARD *kb;
+ KBOARD *kb;
{
KBOARD **kbp;
+
for (kbp = &all_kboards; *kbp != kb; kbp = &(*kbp)->next_kboard)
if (*kbp == NULL)
abort ();
*kbp = kb->next_kboard;
+
+ /* Prevent a dangling reference to KB. */
+ if (kb == current_kboard)
+ {
+ current_kboard = SELECTED_FRAME ()->kboard;
+ if (current_kboard == kb)
+ abort ();
+ }
+
wipe_kboard (kb);
xfree (kb);
}
-#endif
+
+#endif /* MULTI_KBOARD */
void
init_keyboard ()