From d9437faf038d10b42b1e3697b62d6f8b9b9aa114 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Wed, 11 Aug 2021 20:17:33 +0200 Subject: [PATCH] Wrap ClassReferenceInitializer in null check CallableReferenceInitializer might throw an NPE in ProGuard 8.0.0. It will be fixed in 8.0.1 --- .../proguard/tools/KotlinMetadataPrinter.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/proguard/tools/KotlinMetadataPrinter.java b/src/main/java/proguard/tools/KotlinMetadataPrinter.java index 57f9dc8..6bfb7fa 100644 --- a/src/main/java/proguard/tools/KotlinMetadataPrinter.java +++ b/src/main/java/proguard/tools/KotlinMetadataPrinter.java @@ -292,12 +292,19 @@ public void write(int i) { } // Initialize the other references from the program classes. programClassPool.classesAccept( - new ClassReferenceInitializer(programClassPool, - new ClassPool(), - nullWarningPrinter, - nullWarningPrinter, - nullWarningPrinter, - null)); + clazz -> { + try { + clazz.accept( + new ClassReferenceInitializer(programClassPool, + new ClassPool(), + nullWarningPrinter, + nullWarningPrinter, + nullWarningPrinter, + null)); + } catch (Exception ignored) { + // TODO: callable reference initialization may cause NPE, will be fixed in ProGuardCORE 8.0.1 + } + }); } private static String metadataKindToString(int k)