From d72b0645b7213a878b901604ca6c2f1592ec3248 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Fri, 21 Jun 2024 10:37:36 +0200 Subject: [PATCH 1/2] Check for nil in cstringArrayToSeq --- lib/system.nim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/system.nim b/lib/system.nim index ce4ee75363d7..8827841d20ef 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2102,12 +2102,14 @@ when not defined(js): proc cstringArrayToSeq*(a: cstringArray, len: Natural): seq[string] = ## Converts a `cstringArray` to a `seq[string]`. `a` is supposed to be ## of length `len`. + if a == nil: return newSeq(result, len) for i in 0..len-1: result[i] = $a[i] proc cstringArrayToSeq*(a: cstringArray): seq[string] = ## Converts a `cstringArray` to a `seq[string]`. `a` is supposed to be ## terminated by `nil`. + if a == nil: return var L = 0 while a[L] != nil: inc(L) result = cstringArrayToSeq(a, L) From 001d91d6d9918acc5bca7c986621abad3f26f2ea Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 21 Jun 2024 15:09:04 +0200 Subject: [PATCH 2/2] Apply suggestions from code review --- lib/system.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/system.nim b/lib/system.nim index 8827841d20ef..ece94a567735 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2102,14 +2102,14 @@ when not defined(js): proc cstringArrayToSeq*(a: cstringArray, len: Natural): seq[string] = ## Converts a `cstringArray` to a `seq[string]`. `a` is supposed to be ## of length `len`. - if a == nil: return + if a == nil: return @[] newSeq(result, len) for i in 0..len-1: result[i] = $a[i] proc cstringArrayToSeq*(a: cstringArray): seq[string] = ## Converts a `cstringArray` to a `seq[string]`. `a` is supposed to be ## terminated by `nil`. - if a == nil: return + if a == nil: return @[] var L = 0 while a[L] != nil: inc(L) result = cstringArrayToSeq(a, L)