From 7f33344784b77f2ff34e32a15214fb5905bed53b Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 17 Jul 2019 22:34:39 +0200 Subject: [PATCH] Tracking ASM master See gh-23156 --- .../src/main/java/org/springframework/asm/Type.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/asm/Type.java b/spring-core/src/main/java/org/springframework/asm/Type.java index e354c78e64bb..5850ffdeb695 100644 --- a/spring-core/src/main/java/org/springframework/asm/Type.java +++ b/spring-core/src/main/java/org/springframework/asm/Type.java @@ -305,7 +305,8 @@ public static Type[] getArgumentTypes(final String methodDescriptor) { } if (methodDescriptor.charAt(currentOffset++) == 'L') { // Skip the argument descriptor content. - currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1; + int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); } ++numArgumentTypes; } @@ -323,7 +324,8 @@ public static Type[] getArgumentTypes(final String methodDescriptor) { } if (methodDescriptor.charAt(currentOffset++) == 'L') { // Skip the argument descriptor content. - currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1; + int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); } argumentTypes[currentArgumentTypeIndex++] = getTypeInternal(methodDescriptor, currentArgumentTypeOffset, currentOffset); @@ -393,7 +395,8 @@ static int getReturnTypeOffset(final String methodDescriptor) { } if (methodDescriptor.charAt(currentOffset++) == 'L') { // Skip the argument descriptor content. - currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1; + int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); } } return currentOffset + 1; @@ -737,7 +740,8 @@ public static int getArgumentsAndReturnSizes(final String methodDescriptor) { } if (methodDescriptor.charAt(currentOffset++) == 'L') { // Skip the argument descriptor content. - currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1; + int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); } argumentsSize += 1; }