aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAndrey Somov <public.somov@gmail.com>2022-04-29 14:39:40 +0400
committerAndrey Somov <public.somov@gmail.com>2022-04-29 17:18:33 +0400
commitb00fefc0cf2e025224b012386b489589c65d1773 (patch)
treec77887699b4b65255db83196cd6b6bb7018e536f /src/main
parentf3ab4e0f54c37ddb10f00b71d04187bb0ef1799c (diff)
parent3d82e84ddcdeb2007f9504a27abd72d3e4cfa5dd (diff)
downloadsnakeyaml-b00fefc0cf2e025224b012386b489589c65d1773.tar.gz
Fixes
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java7
-rw-r--r--src/main/java/org/yaml/snakeyaml/resolver/Resolver.java14
-rw-r--r--src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java54
3 files changed, 39 insertions, 36 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
index dc92b61d..f38c4e9a 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
@@ -250,7 +250,12 @@ public class SafeConstructor extends BaseConstructor {
public class ConstructYamlInt extends AbstractConstruct {
@Override
public Object construct(Node node) {
- String value = constructScalar((ScalarNode) node).toString().replaceAll("_", "");
+ String value = constructScalar((ScalarNode) node).replaceAll("_", "");
+ if (value.isEmpty()) {
+ throw new ConstructorException("while constructing an int",
+ node.getStartMark(), "found empty value",
+ node.getStartMark());
+ }
int sign = +1;
char first = value.charAt(0);
if (first == '-') {
diff --git a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
index 0ff170d5..9c0d32fb 100644
--- a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
+++ b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
@@ -69,16 +69,14 @@ public class Resolver {
* matches INT (see issue 130)
* http://code.google.com/p/snakeyaml/issues/detail?id=130
*/
- addImplicitResolver(Tag.INT, INT, "-+0123456789", 100);
- addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789.", 100);
- addImplicitResolver(Tag.MERGE, MERGE, "<", 100);
+ addImplicitResolver(Tag.INT, INT, "-+0123456789");
+ addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789.");
+ addImplicitResolver(Tag.MERGE, MERGE, "<", 10);
addImplicitResolver(Tag.NULL, NULL, "~nN\0", 10);
addImplicitResolver(Tag.NULL, EMPTY, null, 10);
addImplicitResolver(Tag.TIMESTAMP, TIMESTAMP, "0123456789", 50);
- // The following implicit resolver is only for documentation
- // purposes.
- // It cannot work
- // because plain scalars cannot start with '!', '&', or '*'.
+ // The following implicit resolver is only for documentation purposes.
+ // It cannot work because plain scalars cannot start with '!', '&', or '*'.
addImplicitResolver(Tag.YAML, YAML, "!&*", 10);
}
@@ -127,7 +125,7 @@ public class Resolver {
for (ResolverTuple v : resolvers) {
Tag tag = v.getTag();
Pattern regexp = v.getRegexp();
- if (value.length() < v.getLimit() && regexp.matcher(value).matches()) {
+ if (value.length() <= v.getLimit() && regexp.matcher(value).matches()) {
return tag;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
index ebdce019..d86a4bf8 100644
--- a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
+++ b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
@@ -16,34 +16,34 @@
package org.yaml.snakeyaml.resolver;
import java.util.regex.Pattern;
-
import org.yaml.snakeyaml.nodes.Tag;
final class ResolverTuple {
- private final Tag tag;
- private final Pattern regexp;
- private final int limit;
-
- public ResolverTuple(Tag tag, Pattern regexp, int limit) {
- this.tag = tag;
- this.regexp = regexp;
- this.limit = limit;
- }
-
- public Tag getTag() {
- return tag;
- }
-
- public Pattern getRegexp() {
- return regexp;
- }
-
- public int getLimit() {
- return limit;
- }
-
- @Override
- public String toString() {
- return "Tuple tag=" + tag + " regexp=" + regexp;
- }
+
+ private final Tag tag;
+ private final Pattern regexp;
+ private final int limit;
+
+ public ResolverTuple(Tag tag, Pattern regexp, int limit) {
+ this.tag = tag;
+ this.regexp = regexp;
+ this.limit = limit;
+ }
+
+ public Tag getTag() {
+ return tag;
+ }
+
+ public Pattern getRegexp() {
+ return regexp;
+ }
+
+ public int getLimit() {
+ return limit;
+ }
+
+ @Override
+ public String toString() {
+ return "Tuple tag=" + tag + " regexp=" + regexp + " limit=" + limit;
+ }
} \ No newline at end of file