diff --git a/Kernel/TTY/VirtualConsole.cpp b/Kernel/TTY/VirtualConsole.cpp index 52c6dcfadf4..c8eac8da6a8 100644 --- a/Kernel/TTY/VirtualConsole.cpp +++ b/Kernel/TTY/VirtualConsole.cpp @@ -36,7 +36,7 @@ namespace Kernel { static u8* s_vga_buffer; -static VirtualConsole* s_consoles[6]; +static VirtualConsole* s_consoles[s_max_virtual_consoles]; static int s_active_console; static RecursiveSpinLock s_lock; @@ -68,6 +68,8 @@ VirtualConsole::VirtualConsole(const unsigned index) , m_index(index) , m_terminal(*this) { + ASSERT(index < s_max_virtual_consoles); + m_tty_name = String::format("/dev/tty%u", m_index); m_terminal.set_size(80, 25); @@ -83,7 +85,7 @@ void VirtualConsole::switch_to(unsigned index) { if ((int)index == s_active_console) return; - ASSERT(index < 6); + ASSERT(index < s_max_virtual_consoles); ASSERT(s_consoles[index]); ScopedSpinLock lock(s_lock); diff --git a/Kernel/TTY/VirtualConsole.h b/Kernel/TTY/VirtualConsole.h index 0e5c90a0624..5d7c3dcf3ab 100644 --- a/Kernel/TTY/VirtualConsole.h +++ b/Kernel/TTY/VirtualConsole.h @@ -33,6 +33,8 @@ namespace Kernel { +static constexpr unsigned s_max_virtual_consoles = 6; + class VirtualConsole final : public TTY , public KeyboardClient , public VT::TerminalClient { diff --git a/Kernel/init.cpp b/Kernel/init.cpp index 06eaf2c2cde..b096f616bf0 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -144,7 +144,9 @@ extern "C" [[noreturn]] void init() VirtualConsole::initialize(); tty0 = new VirtualConsole(0); - new VirtualConsole(1); + for (unsigned i = 1; i < s_max_virtual_consoles; i++) { + new VirtualConsole(i); + } VirtualConsole::switch_to(0); Process::initialize();