From b880cdff49576c0eb83a043cbae595d3587c95b4 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Wed, 31 May 2023 19:10:58 +0200 Subject: [PATCH] handle out of range value for `COLUMNS` / `LINES` (#21968) * handle out of range value for `COLUMNS` / `LINES` Querying terminal size may fail with a `ValueError` if size is too big. Return highest possible value instead. Note that `ValueError` is also reported on underflow (negative size) but that is out of POSIX specs. * `parseSaturatedNatural` --- lib/pure/terminal.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index de96293f8ac5..4177eb002ad8 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -305,7 +305,7 @@ else: var w: int var s = getEnv("COLUMNS") # Try standard env var - if len(s) > 0 and parseInt(s, w) > 0 and w > 0: + if len(s) > 0 and parseSaturatedNatural(s, w) > 0 and w > 0: return w w = terminalWidthIoctl([0, 1, 2]) # Try standard file descriptors if w > 0: return w @@ -339,7 +339,7 @@ else: var h: int var s = getEnv("LINES") # Try standard env var - if len(s) > 0 and parseInt(s, h) > 0 and h > 0: + if len(s) > 0 and parseSaturatedNatural(s, h) > 0 and h > 0: return h h = terminalHeightIoctl([0, 1, 2]) # Try standard file descriptors if h > 0: return h