> Fixes a rare NullPointerException in X500Principal.hashCode() and equals() on > aarch64, where thisX500Name is null. > > I made `thisX500Name` final. The field was non-final only because > `readObject` sets it, and deserialization doesn't run a constructor. I used > `Unsafe.putReference` in `readObject` for that, which is how the JDK handles > this elsewhere: > > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
Chris Hegarty has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision: - Merge remote-tracking branch 'upstream/master' into x500principal-safe-publication - volatile - revert - Make X500Principal.thisX500Name final to fix unsafe publication ------------- Changes: - all: https://git.openjdk.org/jdk/pull/33253/files - new: https://git.openjdk.org/jdk/pull/33253/files/05912e09..a001ba34 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=33253&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=33253&range=00-01 Stats: 66187 lines in 1642 files changed: 37448 ins; 20773 del; 7966 mod Patch: https://git.openjdk.org/jdk/pull/33253.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/33253/head:pull/33253 PR: https://git.openjdk.org/jdk/pull/33253
