From 84b46cbc48c9bd8deac4f2c93d646b1a23400075 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Tue, 22 Feb 2022 19:10:47 +0200 Subject: [PATCH] Fix muzzle failure on calls to primitive array clone (#5405) --- .../tooling/muzzle/ReferenceCollectingClassVisitor.java | 6 ++++++ muzzle/src/test/java/muzzle/TestClasses.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java index 03c99ada9c..19007e5616 100644 --- a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java +++ b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java @@ -362,6 +362,12 @@ final class ReferenceCollectingClassVisitor extends ClassVisitor { ? underlyingType(Type.getType(owner)) : Type.getType("L" + owner + ";"); + // method invoked on a primitive array type + if (ownerType.getSort() != Type.OBJECT) { + super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); + return; + } + { // ref for method return type Type returnType = underlyingType(methodType.getReturnType()); if (returnType.getSort() == Type.OBJECT) { diff --git a/muzzle/src/test/java/muzzle/TestClasses.java b/muzzle/src/test/java/muzzle/TestClasses.java index 2f3b878330..b7dca652da 100644 --- a/muzzle/src/test/java/muzzle/TestClasses.java +++ b/muzzle/src/test/java/muzzle/TestClasses.java @@ -14,6 +14,7 @@ import net.bytebuddy.asm.Advice; public class TestClasses { public static class MethodBodyAdvice { + @SuppressWarnings("ReturnValueIgnored") @Advice.OnMethodEnter public static void methodBodyAdvice() { A a = new A(); @@ -24,6 +25,7 @@ public class TestClasses { a.publicB.methodWithArrays(new String[0]); B.staticMethod(); A.staticB.method("bar"); + new int[0].clone(); } public static class A {