From 894e0e6132b96391ae4990791ddae91b42a3a5e3 Mon Sep 17 00:00:00 2001 From: Jan S Date: Thu, 18 Aug 2022 16:33:18 +0200 Subject: [PATCH] fix: UnsupportedOperationException on adding a field (#1645)(PR #1646) * fix: UnsupportedOperationException on adding a field * changed list check and creation similar to safeAdd --- jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java | 3 +++ .../java/jadx/core/utils/android/AndroidResourcesUtils.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java index 6786633ce..d6bf2fee3 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java @@ -469,6 +469,9 @@ public class ClassNode extends NotificationAttrNode implements ILoadable, ICodeN } public void addField(FieldNode fld) { + if (fields == null || fields.isEmpty()) { + fields = new ArrayList<>(1); + } fields.add(fld); } diff --git a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java index 48d52db02..3791c33fc 100644 --- a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java @@ -129,7 +129,7 @@ public class AndroidResourcesUtils { FieldNode newResField = new FieldNode(typeCls, rFieldInfo, AccessFlags.PUBLIC | AccessFlags.STATIC | AccessFlags.FINAL); newResField.addAttr(new EncodedValue(EncodedType.ENCODED_INT, resource.getId())); - typeCls.getFields().add(newResField); + typeCls.addField(newResField); if (rClsExists) { newResField.addInfoComment("Added by JADX"); }