Skip to content

Commit 7f33344

Browse files
committed
Tracking ASM master
See gh-23156
1 parent 94e3210 commit 7f33344

File tree

1 file changed

+8
-4
lines changed
  • spring-core/src/main/java/org/springframework/asm

1 file changed

+8
-4
lines changed

spring-core/src/main/java/org/springframework/asm/Type.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,8 @@ public static Type[] getArgumentTypes(final String methodDescriptor) {
305305
}
306306
if (methodDescriptor.charAt(currentOffset++) == 'L') {
307307
// Skip the argument descriptor content.
308-
currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
308+
int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset);
309+
currentOffset = Math.max(currentOffset, semiColumnOffset + 1);
309310
}
310311
++numArgumentTypes;
311312
}
@@ -323,7 +324,8 @@ public static Type[] getArgumentTypes(final String methodDescriptor) {
323324
}
324325
if (methodDescriptor.charAt(currentOffset++) == 'L') {
325326
// Skip the argument descriptor content.
326-
currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
327+
int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset);
328+
currentOffset = Math.max(currentOffset, semiColumnOffset + 1);
327329
}
328330
argumentTypes[currentArgumentTypeIndex++] =
329331
getTypeInternal(methodDescriptor, currentArgumentTypeOffset, currentOffset);
@@ -393,7 +395,8 @@ static int getReturnTypeOffset(final String methodDescriptor) {
393395
}
394396
if (methodDescriptor.charAt(currentOffset++) == 'L') {
395397
// Skip the argument descriptor content.
396-
currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
398+
int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset);
399+
currentOffset = Math.max(currentOffset, semiColumnOffset + 1);
397400
}
398401
}
399402
return currentOffset + 1;
@@ -737,7 +740,8 @@ public static int getArgumentsAndReturnSizes(final String methodDescriptor) {
737740
}
738741
if (methodDescriptor.charAt(currentOffset++) == 'L') {
739742
// Skip the argument descriptor content.
740-
currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
743+
int semiColumnOffset = methodDescriptor.indexOf(';', currentOffset);
744+
currentOffset = Math.max(currentOffset, semiColumnOffset + 1);
741745
}
742746
argumentsSize += 1;
743747
}

0 commit comments

Comments
 (0)