From 2df092673abb9de8b0c6c157f1d5398a69ca2cb1 Mon Sep 17 00:00:00 2001 From: Gary Gregory Date: Sun, 3 Dec 2023 10:30:00 -0500 Subject: [PATCH] Fix Spotbugs [ERROR] Class org.apache.bcel.util.ClassVector defines non-transient non-serializable instance field vec [org.apache.bcel.util.ClassVector] In ClassVector.java SE_BAD_FIELD --- src/changes/changes.xml | 3 ++- src/main/java/org/apache/bcel/util/ClassVector.java | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 6d422d583a..dc0593e079 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -64,7 +64,7 @@ The type attribute can be add,update,fix,remove. --> - + Add and use InvalidMethodSignatureException extending ClassFormatException. Increase code coverage in Class2HTMLTestCase with new test input Java4Example #186. @@ -75,6 +75,7 @@ The type attribute can be add,update,fix,remove. Add Const.MAJOR_21. Add Const.MINOR_21. [Bcelifier] stackmap support to pass JDK verifier #177. + Fix SpotBugs [ERROR] Class org.apache.bcel.util.ClassVector defines non-transient non-serializable instance field vec [org.apache.bcel.util.ClassVector] In ClassVector.java SE_BAD_FIELD. When parsing an class with an invalid constant reference, ensure ClassParser.parse() throws ClassFormatException, not NullPointerException. Ensure that references to a constant pool entry with index zero trigger a ClassFormatException, not a NullPointerException. diff --git a/src/main/java/org/apache/bcel/util/ClassVector.java b/src/main/java/org/apache/bcel/util/ClassVector.java index 5960b4b7a6..63180ae6af 100644 --- a/src/main/java/org/apache/bcel/util/ClassVector.java +++ b/src/main/java/org/apache/bcel/util/ClassVector.java @@ -32,8 +32,9 @@ public class ClassVector implements Serializable { private static final long serialVersionUID = 5600397075672780806L; + @Deprecated - protected List vec = new ArrayList<>(); + protected transient List vec = new ArrayList<>(); public void addElement(final JavaClass clazz) { vec.add(clazz); @@ -43,6 +44,11 @@ public JavaClass elementAt(final int index) { return vec.get(index); } + @SuppressWarnings("unused") // SE_TRANSIENT_FIELD_NOT_RESTORED + private void readObjectNoData() { + vec = new ArrayList<>(); + } + public void removeElementAt(final int index) { vec.remove(index); }