diff options
author | Federico Ceratto <federico.ceratto@gmail.com> | 2019-01-26 09:27:08 +0000 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-01-26 10:27:08 +0100 |
commit | 68dd9be0f527470a9166d22fff01ae7a4152ca70 (patch) | |
tree | e2de8bd80d22e6bd767f91d0e77dd65d2b13559b | |
parent | 4d230db5abb630db71001e7f70b8a5bbdf6a3e7e (diff) | |
download | Nim-68dd9be0f527470a9166d22fff01ae7a4152ca70.tar.gz |
Handle empty lines in parsecsv; fixes #8365 (#9343)
-rw-r--r-- | lib/pure/parsecsv.nim | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/pure/parsecsv.nim b/lib/pure/parsecsv.nim index 35ed0b377..e0c4f38a4 100644 --- a/lib/pure/parsecsv.nim +++ b/lib/pure/parsecsv.nim @@ -255,6 +255,12 @@ proc readRow*(my: var CsvParser, columns = 0): bool = var col = 0 # current column let oldpos = my.bufpos + # skip initial empty lines #8365 + while true: + case my.buf[my.bufpos] + of '\c': my.bufpos = handleCR(my, my.bufpos) + of '\l': my.bufpos = handleLF(my, my.bufpos) + else: break while my.buf[my.bufpos] != '\0': let oldlen = my.row.len if oldlen < col+1: @@ -354,7 +360,7 @@ when isMainModule: import os import strutils block: # Tests for reading the header row - let content = "One,Two,Three,Four\n1,2,3,4\n10,20,30,40,\n100,200,300,400\n" + let content = "\nOne,Two,Three,Four\n1,2,3,4\n10,20,30,40,\n100,200,300,400\n" writeFile("temp.csv", content) var p: CsvParser |