diff --git a/arch/x86/kernel/kb.c b/arch/x86/kernel/kb.c index ce377862..7307852e 100644 --- a/arch/x86/kernel/kb.c +++ b/arch/x86/kernel/kb.c @@ -109,15 +109,14 @@ static void keyboard_handler(struct state *r) * you would add 128 to the scancode when you look for it */ kputchar(kbdus[scancode]); - if (kb_buffer.size <= kb_buffer.maxsize) { + if (kb_buffer.size <= kb_buffer.maxsize && kb_buffer.buffer != NULL) { memcpy(kb_buffer.buffer + kb_buffer.size, &kbdus[scancode], 1); kb_buffer.size++; + if (scancode == 28 || scancode == 15 || kb_buffer.size >= kb_buffer.maxsize) { + wakeup_task(kb_buffer.tid); + reschedule(); + } } - if (scancode == 28 || scancode == 15 || kb_buffer.size >= kb_buffer.maxsize) { - wakeup_task(kb_buffer.tid); - reschedule(); - } - } }