diff --git a/src/capex.text/CSVParser.sling b/src/capex.text/CSVParser.sling index 77da8b39..38fc8cf6 100644 --- a/src/capex.text/CSVParser.sling +++ b/src/capex.text/CSVParser.sling @@ -80,8 +80,13 @@ func acceptRows private as DynamicVector var records = new DynamicVector() loop { var record = new DynamicVector() + var hasColumn = true loop { var column = acceptColumn() + if not column { + hasColumn = false + break + } record.append(column) var c = iterator.getCurrentChar() if c == ',' { @@ -94,6 +99,8 @@ func acceptRows private as DynamicVector if iterator.hasEnded(): break } + if not hasColumn: + break records.append(record) if iterator.hasEnded(): break @@ -104,6 +111,8 @@ func acceptRows private as DynamicVector func acceptColumn private as string { var ss = iterator.getCurrentChar() + if ss < 1: + return null var insideQuotes = (ss == '\'' || ss == '"') var sb = new StringBuilder() if not insideQuotes {