diff options
Diffstat (limited to 'src/keyboard.c')
| -rw-r--r-- | src/keyboard.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 1d984be4fcc..a9dd324a381 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -10013,19 +10013,33 @@ wipe_kboard (kb) | |||
| 10013 | } | 10013 | } |
| 10014 | 10014 | ||
| 10015 | #ifdef MULTI_KBOARD | 10015 | #ifdef MULTI_KBOARD |
| 10016 | |||
| 10017 | /* Free KB and memory referenced from it. */ | ||
| 10018 | |||
| 10016 | void | 10019 | void |
| 10017 | delete_kboard (kb) | 10020 | delete_kboard (kb) |
| 10018 | KBOARD *kb; | 10021 | KBOARD *kb; |
| 10019 | { | 10022 | { |
| 10020 | KBOARD **kbp; | 10023 | KBOARD **kbp; |
| 10024 | |||
| 10021 | for (kbp = &all_kboards; *kbp != kb; kbp = &(*kbp)->next_kboard) | 10025 | for (kbp = &all_kboards; *kbp != kb; kbp = &(*kbp)->next_kboard) |
| 10022 | if (*kbp == NULL) | 10026 | if (*kbp == NULL) |
| 10023 | abort (); | 10027 | abort (); |
| 10024 | *kbp = kb->next_kboard; | 10028 | *kbp = kb->next_kboard; |
| 10029 | |||
| 10030 | /* Prevent a dangling reference to KB. */ | ||
| 10031 | if (kb == current_kboard) | ||
| 10032 | { | ||
| 10033 | current_kboard = SELECTED_FRAME ()->kboard; | ||
| 10034 | if (current_kboard == kb) | ||
| 10035 | abort (); | ||
| 10036 | } | ||
| 10037 | |||
| 10025 | wipe_kboard (kb); | 10038 | wipe_kboard (kb); |
| 10026 | xfree (kb); | 10039 | xfree (kb); |
| 10027 | } | 10040 | } |
| 10028 | #endif | 10041 | |
| 10042 | #endif /* MULTI_KBOARD */ | ||
| 10029 | 10043 | ||
| 10030 | void | 10044 | void |
| 10031 | init_keyboard () | 10045 | init_keyboard () |