From a2217c7fc6ab1c42fd3cae8dddbfbfd286242f04 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alexander.rose@weirdbyte.de>
Date: Sun, 22 Sep 2019 19:42:31 -0700
Subject: [PATCH] fix csv parser chunking

---
 src/mol-io/reader/csv/parser.ts | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/mol-io/reader/csv/parser.ts b/src/mol-io/reader/csv/parser.ts
index 718708c7f..b8a852ddc 100644
--- a/src/mol-io/reader/csv/parser.ts
+++ b/src/mol-io/reader/csv/parser.ts
@@ -209,22 +209,26 @@ function moveNext(state: State) {
 function readRecordsChunk(chunkSize: number, state: State) {
     if (state.tokenType === CsvTokenType.End) return 0
 
-    let newRecord = moveNext(state);
-    if (newRecord) ++state.recordCount
+    let counter = 0;
+    let newRecord: boolean | undefined
 
     const { tokens, tokenizer } = state;
-    let counter = 0;
+
     while (state.tokenType === CsvTokenType.Value && counter < chunkSize) {
         TokenBuilder.add(tokens[state.fieldCount % state.columnCount], tokenizer.tokenStart, tokenizer.tokenEnd);
         ++state.fieldCount
         newRecord = moveNext(state);
-        if (newRecord) ++state.recordCount
-        ++counter;
+        if (newRecord) {
+            ++state.recordCount
+            ++counter;
+        }
     }
     return counter;
 }
 
 function readRecordsChunks(state: State) {
+    let newRecord = moveNext(state);
+    if (newRecord) ++state.recordCount
     return chunkedSubtask(state.runtimeCtx, 100000, state, readRecordsChunk,
         (ctx, state) => ctx.update({ message: 'Parsing...', current: state.tokenizer.position, max: state.data.length }));
 }
-- 
GitLab