# HG changeset patch # User Gerd Moellmann # Date 987685201 0 # Node ID 2ac65f4d70e5a31e39f1695df1eca0b9c0e6a755 # Parent 9e11cb3d60f1efa633ba018dcb3ab28bcfd0df46 (delete_kboard): Prevent a dangling reference from current_kboard to KB, which is freed. diff -r 9e11cb3d60f1 -r 2ac65f4d70e5 src/keyboard.c --- a/src/keyboard.c Thu Apr 19 12:47:59 2001 +0000 +++ b/src/keyboard.c Thu Apr 19 13:00:01 2001 +0000 @@ -10013,19 +10013,33 @@ } #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 ()