From fb86efb769235c59e78fef14cd2ff497fdcac156 Mon Sep 17 00:00:00 2001 From: Jared Davis Date: Wed, 10 Jun 2026 14:55:37 -0400 Subject: [PATCH 1/2] Block Integer parsing of a string if it contains a decimal point. --- src/main/java/org/scijava/parsington/Literals.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/parsington/Literals.java b/src/main/java/org/scijava/parsington/Literals.java index 842b0bc..4d82ff1 100644 --- a/src/main/java/org/scijava/parsington/Literals.java +++ b/src/main/java/org/scijava/parsington/Literals.java @@ -407,8 +407,9 @@ public static Number parseDecimal(final CharSequence s, final Position pos) { final boolean forceLong = "l".equalsIgnoreCase(force); final boolean forceFloat = "f".equalsIgnoreCase(force); final boolean forceDouble = "d".equalsIgnoreCase(force); + final int dot = number.indexOf("."); Number result = null; - if (!forceFloat && !forceDouble) { + if ((dot == -1) && !forceFloat && !forceDouble) { result = parseInteger(number, forceLong, 10); } if (result == null && !forceLong) { From aa54f8cd204aa0115e82e63c8d635e695a6b4042 Mon Sep 17 00:00:00 2001 From: Jared Davis Date: Fri, 12 Jun 2026 12:58:35 -0400 Subject: [PATCH 2/2] Use output from matcher group 3 instead of indexOf --- src/main/java/org/scijava/parsington/Literals.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/parsington/Literals.java b/src/main/java/org/scijava/parsington/Literals.java index 4d82ff1..6acc232 100644 --- a/src/main/java/org/scijava/parsington/Literals.java +++ b/src/main/java/org/scijava/parsington/Literals.java @@ -407,9 +407,8 @@ public static Number parseDecimal(final CharSequence s, final Position pos) { final boolean forceLong = "l".equalsIgnoreCase(force); final boolean forceFloat = "f".equalsIgnoreCase(force); final boolean forceDouble = "d".equalsIgnoreCase(force); - final int dot = number.indexOf("."); Number result = null; - if ((dot == -1) && !forceFloat && !forceDouble) { + if ((m.start(3) == -1) && !forceFloat && !forceDouble) { result = parseInteger(number, forceLong, 10); } if (result == null && !forceLong) {