From d63d03b5e93eea27739072d657c619c9f7d27369 Mon Sep 17 00:00:00 2001 From: liach Date: Fri, 11 Jan 2019 02:12:46 -0800 Subject: Fix annotation npe for villager (#99) Signed-off-by: liach --- .../translators/TranslationAnnotationVisitor.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma') diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java index df5f8f7..2e5b54d 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java +++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java @@ -23,21 +23,29 @@ public class TranslationAnnotationVisitor extends AnnotationVisitor { @Override public AnnotationVisitor visitArray(String name) { - return this; + return new TranslationAnnotationVisitor(translator, annotationEntry, api, super.visitArray(name)); } @Override public AnnotationVisitor visitAnnotation(String name, String desc) { TypeDescriptor type = new TypeDescriptor(desc); - FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type)); - return super.visitAnnotation(annotationField.getName(), annotationField.getDesc().toString()); + if (name != null) { + FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type)); + return super.visitAnnotation(annotationField.getName(), annotationField.getDesc().toString()); + } else { + return super.visitAnnotation(null, translator.getTranslatedTypeDesc(type).toString()); + } } @Override public void visitEnum(String name, String desc, String value) { TypeDescriptor type = new TypeDescriptor(desc); - FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type)); FieldEntry enumField = translator.getTranslatedField(new FieldEntry(type.getTypeEntry(), value, type)); - super.visitEnum(annotationField.getName(), annotationField.getDesc().toString(), enumField.getName()); + if (name != null) { + FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type)); + super.visitEnum(annotationField.getName(), annotationField.getDesc().toString(), enumField.getName()); + } else { + super.visitEnum(null, translator.getTranslatedTypeDesc(type).toString(), enumField.getName()); + } } } -- cgit v1.2.3