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

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-analyzer.git

commit bb1464b7364c05ba2cc442736106c3f7be14c9e2
Author: Charles Honton <chon...@proofpoint.com>
AuthorDate: Mon Feb 21 21:15:21 2022 -0800

    MSHARED-1039: Fix array parsing
---
 .../dependency/analyzer/asm/ResultCollector.java   | 25 +++++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollector.java
 
b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollector.java
index 0cc5924..83173c3 100644
--- 
a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollector.java
+++ 
b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollector.java
@@ -19,11 +19,11 @@ package org.apache.maven.shared.dependency.analyzer.asm;
  * under the License.
  */
 
-import org.objectweb.asm.Type;
-
 import java.util.HashSet;
 import java.util.Set;
 
+import org.objectweb.asm.Type;
+
 /**
  * <p>ResultCollector class.</p>
  *
@@ -57,15 +57,24 @@ public class ResultCollector
         }
 
         // decode arrays
-        if ( name.startsWith( "[L" ) && name.endsWith( ";" ) )
+        if ( name.charAt( 0 ) == '[' )
         {
-            name = name.substring( 2, name.length() - 1 );
+            int i = 0;
+            do
+            {
+                ++i;
+            }
+            while ( name.charAt( i ) == '[' ); // could have array of array ...
+            if ( name.charAt( i ) != 'L' )
+            {
+                // ignore array of scalar types
+                return;
+            }
+            name = name.substring( i + 1, name.length() - 1 );
         }
 
         // decode internal representation
-        name = name.replace( '/', '.' );
-
-        classes.add( name );
+        add( name.replace( '/', '.' ) );
     }
 
     void addDesc( final String desc )
@@ -82,7 +91,7 @@ public class ResultCollector
                 break;
 
             case Type.OBJECT:
-                addName( t.getClassName().replace( '.', '/' ) );
+                addName( t.getClassName() );
                 break;
 
             default:

Reply via email to