Kernel/Terminal: Fix ANSI SGR 8 bit color parsing

This commit is contained in:
Bananymous 2025-06-05 20:43:57 +03:00
parent 49f203d61d
commit cfeabc4580
2 changed files with 4 additions and 4 deletions

View File

@ -149,10 +149,10 @@ namespace Kernel
BAN::Optional<TerminalDriver::Color> VirtualTTY::get_8bit_color() BAN::Optional<TerminalDriver::Color> VirtualTTY::get_8bit_color()
{ {
ASSERT(m_ansi_state.nums[1] == 5); ASSERT(m_ansi_state.nums[1] == 5);
if (m_ansi_state.nums[2] < 1) if (m_ansi_state.nums[2] < 0)
return {}; return {};
const uint8_t code = BAN::Math::min(m_ansi_state.nums[2], 256) - 1; const uint8_t code = BAN::Math::min(m_ansi_state.nums[2], 255);
if (code < 16) if (code < 16)
return m_palette[code]; return m_palette[code];

View File

@ -383,10 +383,10 @@ void Terminal::handle_sgr(int32_t value)
BAN::Optional<uint32_t> Terminal::get_8bit_color() BAN::Optional<uint32_t> Terminal::get_8bit_color()
{ {
ASSERT(m_csi_info.fields[1] == 5); ASSERT(m_csi_info.fields[1] == 5);
if (m_csi_info.fields[2] < 1) if (m_csi_info.fields[2] < 0)
return {}; return {};
const uint8_t code = BAN::Math::min(m_csi_info.fields[2], 256) - 1; const uint8_t code = BAN::Math::min(m_csi_info.fields[2], 255);
if (code < 8) if (code < 8)
return s_colors_dark[code]; return s_colors_dark[code];
if (code < 16) if (code < 16)