I have a strange problem with Nim (both 19.2 release and 19.9[most current]
nightly.
const MEG64 = 1024 * 1024 * 64
var somebuf: array[MEG64, char] # some large buffer
# ...
proc char_arr_stuff(bufx: openArray[char], start: int) =
var
j = 0
c: char
while j < 64:
let k = start + j
debugEcho "j, k: " & $j & ", " & $k # first output: "0, 0" (as
expected)
c = bufx[k] # BANG!
# ...
# open a file with (a bit more than) 64MB data (all in a..z,A..Z,0..9)
let bytesRead = myfile.readData(addr(somebuf[0]), MEG64) # Note: This
works.
# ...
Run
with `char_arr_stuff` getting passed in `somebuf`.
Nim compiles OK but when running it it raises "index 0 not in 0 .. -1
[IndexError]" through `raiseIndexError2`.
Well noted, the file reading works and `somebuf` (as well as `bufx` which is
just `somebuf` passed into the proc) is valid and does contain (the correct)
data. So 0 is not within `0 .. -1`?? Side note: To be really, really sure I
verified that `bufx.low() == 0`.
Btw @dom96
It drives me nuts that I always have to indent by hand code I insert here.
Probably it's just me being forum-stupid. Would you please tell me how to do it
better?