RFR: 8290041: ModuleDescriptor.hashCode is inconsistent

Peter Levart plevart at openjdk.org
Sun Aug 7 08:00:05 UTC 2022


On Sat, 6 Aug 2022 08:08:43 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

> Can I please get a review of this change which proposes to fix https://bugs.openjdk.org/browse/JDK-8290041? 
> 
> As noted by the reporter, the current implementation is buggy since the calculation can result in a different value of the hashcode depending on the order of iteration of the `Modifier`s. The commit in this PR changes that computation to produce consistent result irrespective of the order in which the `Modifier`s (enum) is iterated upon.
> 
> A new test has been added which reproduces the issue and verifies the fix.

src/java.base/share/classes/java/lang/module/ModuleDescriptor.java line 2630:

> 2628:         int h = 0;
> 2629:         for (Enum<?> e : enums) {
> 2630:             h = h + Objects.hashCode(e.name()) * 43;

why * 43 ? Isn't String.hashCode good enough?

-------------

PR: https://git.openjdk.org/jdk/pull/9790


More information about the core-libs-dev mailing list