This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
commit 8b3e1751c6dcdf5cf82f312692df27fb9d714fbd Author: Gary David Gregory (Code signing key) <[email protected]> AuthorDate: Sat Nov 19 16:25:14 2022 -0500 org.apache.bcel.util.ClassPath hashCode() and equals() don't match. --- src/changes/changes.xml | 1 + src/main/java/org/apache/bcel/util/ClassPath.java | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 9fab3684..4adb3858 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -91,6 +91,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.StackMapEntry.StackMapEntry(DataInput, ConstantPool) reads signed instead of unsigned shorts from its DataInput.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.StackMapType.StackMapType(DataInput, ConstantPool) reads signed instead of unsigned shorts from its DataInput.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ConstantInvokeDynamic.ConstantInvokeDynamic(DataInput).</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.util.ClassPath hashCode() and equals() don't match.</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs-maven-plugin from 4.7.2.2 to 4.7.3.0 #167.</action> <action type="update" dev="ggregory" due-to="Dependabot">Bump jmh.version from 1.35 to 1.36 #170.</action> diff --git a/src/main/java/org/apache/bcel/util/ClassPath.java b/src/main/java/org/apache/bcel/util/ClassPath.java index de8aa568..c6e36c6d 100644 --- a/src/main/java/org/apache/bcel/util/ClassPath.java +++ b/src/main/java/org/apache/bcel/util/ClassPath.java @@ -536,7 +536,7 @@ public class ClassPath implements Closeable { @SuppressWarnings("resource") public ClassPath(final ClassPath parent, final String classPathString) { this.parent = parent; - this.classPathString = classPathString; + this.classPathString = Objects.requireNonNull(classPathString, "classPathString"); this.paths = new ArrayList<>(); for (final StringTokenizer tokenizer = new StringTokenizer(classPathString, File.pathSeparator); tokenizer.hasMoreTokens();) { final String path = tokenizer.nextToken(); @@ -580,12 +580,18 @@ public class ClassPath implements Closeable { } @Override - public boolean equals(final Object o) { - if (o instanceof ClassPath) { - final ClassPath cp = (ClassPath) o; - return classPathString.equals(cp.toString()); + public boolean equals(Object obj) { + if (this == obj) { + return true; } - return false; + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ClassPath other = (ClassPath) obj; + return Objects.equals(classPathString, other.classPathString); } /** @@ -767,9 +773,6 @@ public class ClassPath implements Closeable { @Override public int hashCode() { - if (parent != null) { - return classPathString.hashCode() + parent.hashCode(); - } return classPathString.hashCode(); }
