1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:57:34 +00:00

Kernel: Fix crash when switching to console 5 & 6

The changes in commit 20743e8 removed the s_max_virtual_consoles
constant and hardcoded the number of consoles to 4. But in
PS2KeyboardDevice the keyboard shortcuts for switching to consoles were
hardcoded to 6.

I reintroduced the constant and added it in both places.
This commit is contained in:
Sebastian Zaha 2021-05-31 18:42:21 +02:00 committed by GitHub
parent b3746f9745
commit 77044dd383
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 2 deletions

View file

@ -70,7 +70,7 @@ void PS2KeyboardDevice::irq_handle_byte_read(u8 byte)
default: default:
if (m_modifiers & Mod_Alt) { if (m_modifiers & Mod_Alt) {
switch (ch) { switch (ch) {
case 0x02 ... 0x07: // 1 to 6 case 0x02 ... 0x01 + ConsoleManagement::s_max_virtual_consoles:
g_io_work->queue([this, ch]() { g_io_work->queue([this, ch]() {
ConsoleManagement::the().switch_to(ch - 0x02); ConsoleManagement::the().switch_to(ch - 0x02);
}); });

View file

@ -44,7 +44,7 @@ UNMAP_AFTER_INIT ConsoleManagement::ConsoleManagement()
UNMAP_AFTER_INIT void ConsoleManagement::initialize() UNMAP_AFTER_INIT void ConsoleManagement::initialize()
{ {
for (size_t index = 0; index < 4; index++) { for (size_t index = 0; index < s_max_virtual_consoles; index++) {
// FIXME: Better determine the debug TTY we chose... // FIXME: Better determine the debug TTY we chose...
if (index == 1) { if (index == 1) {
m_consoles.append(VirtualConsole::create_with_preset_log(index, ConsoleDevice::the().logbuffer())); m_consoles.append(VirtualConsole::create_with_preset_log(index, ConsoleDevice::the().logbuffer()));

View file

@ -20,6 +20,8 @@ class ConsoleManagement {
public: public:
ConsoleManagement(); ConsoleManagement();
static constexpr unsigned s_max_virtual_consoles = 6;
static bool is_initialized(); static bool is_initialized();
static ConsoleManagement& the(); static ConsoleManagement& the();