[OpenJDK 2D-Dev] RFR: 8262915: java.awt.color.ColorSpace.getName() is not thread-safe

Sergey Bylokhov serb at openjdk.java.net
Wed Mar 3 06:08:06 UTC 2021


On Wed, 3 Mar 2021 03:46:59 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

> The java.awt.color.ColorSpace.getName()  method does not use any kind of synchronization to properly initialize and use the static cache for the color components names.

src/java.desktop/share/classes/java/awt/color/ColorSpace.java line 115:

> 113:      * Lazy-initialized names of components in the color space.
> 114:      */
> 115:     private transient volatile String [] compName;

The volatile keyword is the only one necessary to fix this bug, everything else is a cleanup.

src/java.desktop/share/classes/java/awt/color/ColorSpace.java line 454:

> 452:      * Returns the name of the component given the component index.
> 453:      *
> 454:      * @param  component the component index

All other methods use the "component" as a name of the component index.

src/java.desktop/share/classes/java/awt/color/ColorSpace.java line 459:

> 457:         rangeCheck(idx);
> 458:         if (compName == null) {
> 459:             switch (type) {

the "switch statement" is replaced by the "switch expression"

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

PR: https://git.openjdk.java.net/jdk/pull/2801


More information about the 2d-dev mailing list