RFR: 8351913: ToolkitImage renders some gifs wrong [v6]
Jeremy Wood
duke at openjdk.org
Mon Jun 23 16:02:35 UTC 2025
On Mon, 26 May 2025 05:30:55 GMT, Jeremy Wood <duke at openjdk.org> wrote:
>> I do not have much background in LZW compression or in C, but I'm reasonably confident this resolves the problem I'm observing. It looks like the GifImageDecoder was not always correctly handling compression codes after the table reached its limit of ~4096. If anyone has suggestions for improvements I'm happy to make adjustments.
>>
>> Luckily while debugging this: I was able to compare the flawed implementation (GifImageDecoder) with ImageIO's implementation (GIFImageReader) to help identify how the suffix/prefix tables are supposed to work.
>>
>> ImageIO's implementation may have suffered a similar bug (maybe https://bugs.openjdk.org/browse/JDK-7131823 ?), and that appears to have been backported.
>>
>> I have dozens of additional test cases for this problem, but unfortunately I don't have the rights to commit them to the OpenJDK repo. Feel free to email me for additional context/test cases.
>>
>> I wrote four PRs that share the GifComparison class in this PR. Once any of them clear code review the other PRs will be much simpler:
>> 1. [8357034](https://github.com/openjdk/jdk/pull/25264)
>> 2. [8356137](https://github.com/openjdk/jdk/pull/25044)
>> 3. [8356320](https://github.com/openjdk/jdk/pull/25076)
>> 4. [8351913](https://github.com/openjdk/jdk/pull/24271) (this one)
>
> Jeremy Wood has updated the pull request incrementally with one additional commit since the last revision:
>
> 8356137: Adding copyright to GifComparison
I'm assuming (?) there's a compelling reason to preserve the GifImageDecoder. ImageIO's decoder appears to avoid all the bugs I've observed in the ToolkitImage's implementation. If they are redundant: we could just rewrite the GifImageDecoder to rely on ImageIO .
-------------
PR Comment: https://git.openjdk.org/jdk/pull/24271#issuecomment-2997036336
More information about the client-libs-dev
mailing list