RFR: 8357034: GifImageDecoder can produce wrong transparent pixels [v7]
Jeremy Wood
jwood at openjdk.org
Fri Aug 22 22:53:28 UTC 2025
> If there are two consecutive frames that use DISPOSAL_SAVE, but the transparent pixel index changed: we might accidentally send the wrong data to the ImageConsumer.
>
> We already had logic that submits info "the hard way" (see comment in code); this PR just makes sure we trigger that block.
>
> There are a cluster of four related PRs that share the GifComparison class in this PR.
>
> 1. [8357034](https://github.com/openjdk/jdk/pull/25264) (this one)
> 2. ~~[8356137](https://github.com/openjdk/jdk/pull/25044)~~ (integrated)
> 3. [8356320](https://github.com/openjdk/jdk/pull/25076)
> 4. [8351913](https://github.com/openjdk/jdk/pull/24271)
>
> This bug can be observed reading these gif animations:
>
> https://giphy.com/gifs/fomoduck-duck-fomo-ZUlzR40oGACqNmy0q8
> https://media4.giphy.com/media/Zbf4JQzcDhzeraQvk9/giphy.gif
> https://giphy.com/gifs/computer-working-cat-LHZyixOnHwDDy
> https://giphy.com/gifs/90s-fgfgif-r4BmI9xUaDuKJQdd3l
Jeremy Wood has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 34 commits:
- 8357034: switch to `isSavedModelReliable`
This reduces how often we resort to "the hard way". The previous implementation would resort to the hard way *any* time the disposal code was SAVE and there was a transparent pixel in use.
This is in response to:
https://github.com/openjdk/jdk/pull/25264/files#r2292318270
- Merge branch 'master' into JDK-8357034
- 8357034: re-wrapping line breaks
- 8356137, 8357034: add debug option to dump PNGs of frames
This is in response to:
https://github.com/openjdk/jdk/pull/25044#pullrequestreview-3007487527
- Merge branch 'master' into JDK-8357034
# Conflicts:
# test/jdk/sun/awt/image/gif/GifBuilder.java
# test/jdk/sun/awt/image/gif/GifComparison.java
- 8357034: avoid recalculating isSimpleSavedImageComparison for every line
This is in response to:
https://github.com/openjdk/jdk/pull/25264#discussion_r2197097522
- Merge branch 'master' into JDK-8357034
- 8356320: Use new GifBuilder and remove ukraine-flag.gif
This is an extension of work for this PR:
https://github.com/openjdk/jdk/pull/25044#pullrequestreview-2871107750
- 8356137: adding copyright
- 8356137: Adding GifBuilder to dynamically create test file
This can be used by multiple gif tests in this directory.
This is in response to:
https://github.com/openjdk/jdk/pull/25044#pullrequestreview-2871107750
- ... and 24 more: https://git.openjdk.org/jdk/compare/57553ca1...e7796df0
-------------
Changes: https://git.openjdk.org/jdk/pull/25264/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25264&range=06
Stats: 147 lines in 5 files changed: 112 ins; 4 del; 31 mod
Patch: https://git.openjdk.org/jdk/pull/25264.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25264/head:pull/25264
PR: https://git.openjdk.org/jdk/pull/25264
More information about the client-libs-dev
mailing list