[OpenJDK 2D-Dev] RFR: 8260695: The java.awt.color.ICC_Profile#getData/getData(int) are not thread safe [v2]

Alexander Zvegintsev azvegint at openjdk.java.net
Sun Feb 7 22:07:48 UTC 2021


On Sat, 6 Feb 2021 07:25:08 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> Both methods are implemented in a similar way.
>>  1. Requests the size of the profile/tag data
>>  2. Creates an array of the correct size
>>  3. Requests the data and copy it to the array
>> 
>> If the data will be changed concurrently between steps 2. and 3. then we will get a mismatch between the array and copied data. 
>> 
>> In the fix, all steps above are merged to just one step - return the data when requested.
>
> Sergey Bylokhov 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 seven additional commits since the last revision:
> 
>  - Merge branch 'master' into JDK-8260695
>  - cleanup
>  - Merge branch 'JDK-8260695' of https://github.com/mrserb/jdk into JDK-8260695
>  - Update LCMSProfile.java
>  - Update LCMSProfile.java
>  - Create MTGetData.java
>  - Initial fix

Marked as reviewed by azvegint (Reviewer).

src/java.desktop/share/classes/sun/java2d/cmm/CMSManager.java line 103:

> 101:         }
> 102: 
> 103:         public byte[] getProfileData(Profile p) {

Not sure if it is a big loss, but it looks like we are no longer printing profile and tag sizes under CMMTracer after the fix.

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

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


More information about the 2d-dev mailing list