changeset 117:a030c3e53cf5

Skip over column delimiter, and don't accept just "-" as a valid number.
author Sjoerd Mullender <sjoerd@acm.org>
date Fri, 17 Feb 2017 09:47:48 +0100 (2017-02-17)
parents 04c535b05c52
children 1ea2ee3b946c
files src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
@@ -175,6 +175,7 @@ public class HeaderLineParser extends MC
 			if (chrLine[i] == ',' && chrLine[i + 1] == '\t') {
 				intValues[elem++] = tmp;
 				tmp = 0;
+				start = i++;
 			} else {
 				tmp *= 10;
 				// note: don't use Character.isDigit() here, because
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java
@@ -104,10 +104,14 @@ public class StartOfHeaderParser {
 		char chr = soh.get();
 		// note: don't use Character.isDigit() here, because
 		// we only want ISO-LATIN-1 digits
+		if(chr == '-') {
+			positive = false;
+			if (!soh.hasRemaining())
+				throw new MCLParseException("unexpected end of string", soh.position() - 1);
+			chr = soh.get();
+		}
 		if (chr >= '0' && chr <= '9') {
 			tmp = (int)chr - (int)'0';
-		} else if(chr == '-') {
-			positive = false;
 		} else {
 			throw new MCLParseException("expected a digit", soh.position() - 1);
 		}