You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/10/01 14:29:20 UTC

[groovy] 01/03: avoid String.split(String) has surprising behavior

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 923dd631ca53d9c1a090a55e444fca3bc91722b4
Author: Paul King <pa...@asert.com.au>
AuthorDate: Thu Oct 1 22:49:55 2020 +1000

    avoid String.split(String) has surprising behavior
---
 .../groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java     | 2 +-
 .../org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java     | 4 ++--
 .../java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyDoc.java     | 2 +-
 .../main/java/org/apache/groovy/swing/binding/PropertyBinding.java    | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java
index a2ddd34..64dc16f 100644
--- a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java
+++ b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java
@@ -1413,7 +1413,7 @@ public class Groovyc extends MatchingTask {
         ClassLoader loader = getClass().getClassLoader();
         if (loader instanceof AntClassLoader) {
             AntClassLoader antLoader = (AntClassLoader) loader;
-            String[] pathElm = antLoader.getClasspath().split(File.pathSeparator);
+            String[] pathElm = antLoader.getClasspath().split(File.pathSeparator, -1);
             List<String> classpath = configuration.getClasspath();
             /*
              * Iterate over the classpath provided to groovyc, and add any missing path
diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
index 453eb85..0011bbe 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
@@ -518,7 +518,7 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
         }
 
         if (!type.contains(".") && classDoc != null) {
-            String[] pieces = type.split("#");
+            String[] pieces = type.split("#", -1);
             String candidate = pieces[0];
             Class c = classDoc.resolveExternalClassFromImport(candidate);
             if (c != null) type = c.getName();
@@ -528,7 +528,7 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
 
         final String[] target = type.split("#");
         String shortClassName = target[0].replaceAll(".*\\.", "");
-        shortClassName += (target.length > 1 ? "#" + target[1].split("\\(")[0] : "");
+        shortClassName += (target.length > 1 ? "#" + target[1].split("\\(", -1)[0] : "");
         String name = (full ? target[0] : shortClassName).replace('#', '.').replace('$', '.');
 
         // last chance lookup for classes within the current codebase
diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyDoc.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyDoc.java
index c212c8d..0b9e110 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyDoc.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyDoc.java
@@ -100,7 +100,7 @@ public class SimpleGroovyDoc implements GroovyDoc/*, GroovyTokenTypes*/ {
         String trimmed = RAW_COMMENT_PATTERN.matcher(rawCommentText).replaceFirst("@");
         if (trimmed.equals(rawCommentText)) return;
         String cleaned = TRIMMED_COMMENT_PATTERN.matcher(trimmed).replaceAll("$1").trim();
-        String[] split = cleaned.split("(?m)^@");
+        String[] split = cleaned.split("(?m)^@", -1);
         List<GroovyTag> result = new ArrayList<GroovyTag>();
         for (String s : split) {
             String tagname = null;
diff --git a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
index 0547356..cb3a023 100644
--- a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
+++ b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
@@ -71,7 +71,7 @@ public class PropertyBinding implements SourceBinding, TargetBinding, TriggerBin
         for (String line : lines) {
             line = line.trim();
             if (line.startsWith("#")) return;
-            String[] parts = line.split("=");
+            String[] parts = line.split("=", -1);
             if (parts.length == 2) {
                 try {
                     ACCESSORS.put(cl.loadClass(parts[0].trim()), getaAccessorClass(cl, parts[1]));