From 11b54d36a5661caadfe93e5fd2c416da497bf5e4 Mon Sep 17 00:00:00 2001 From: Col-E Date: Sat, 20 Mar 2021 00:17:58 -0400 Subject: [PATCH] fix: Annotations being stripped from methods in assembler in some cases --- src/main/java/me/coley/recaf/util/ClassUtil.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/coley/recaf/util/ClassUtil.java b/src/main/java/me/coley/recaf/util/ClassUtil.java index 0244da197..770ebd7cd 100644 --- a/src/main/java/me/coley/recaf/util/ClassUtil.java +++ b/src/main/java/me/coley/recaf/util/ClassUtil.java @@ -315,9 +315,20 @@ public static boolean isClass(byte[] data) { * @param to method to copy to. */ public static void copyMethodMetadata(MethodNode from, MethodNode to) { + if (to.invisibleAnnotations == null && from.invisibleAnnotations != null) + to.invisibleAnnotations = new ArrayList<>(); + if (to.visibleAnnotations == null && from.visibleAnnotations != null) + to.visibleAnnotations = new ArrayList<>(); + if (to.invisibleTypeAnnotations == null && from.invisibleTypeAnnotations != null) + to.invisibleTypeAnnotations = new ArrayList<>(); + if (to.visibleTypeAnnotations == null && from.visibleTypeAnnotations != null) + to.visibleTypeAnnotations = new ArrayList<>(); + if (to.invisibleLocalVariableAnnotations == null && from.invisibleLocalVariableAnnotations != null) + to.invisibleLocalVariableAnnotations = new ArrayList<>(); + if (to.visibleLocalVariableAnnotations == null && from.visibleLocalVariableAnnotations != null) + to.visibleLocalVariableAnnotations = new ArrayList<>(); updateAnnotationList(to.invisibleAnnotations, from.invisibleAnnotations); updateAnnotationList(to.visibleAnnotations, from.visibleAnnotations); - updateAnnotationList(to.invisibleAnnotations, from.invisibleAnnotations); updateAnnotationList(to.invisibleTypeAnnotations, from.invisibleTypeAnnotations); updateAnnotationList(to.visibleTypeAnnotations, from.visibleTypeAnnotations); updateAnnotationList(to.invisibleLocalVariableAnnotations, from.invisibleLocalVariableAnnotations);