RFR: 8357034: GifImageDecoder can produce wrong transparent pixels [v4]
Jeremy Wood
duke at openjdk.org
Sun Jun 1 07:13:14 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.
>
> 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) (this one)
> 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)
Jeremy Wood has updated the pull request incrementally with five additional commits since the last revision:
- 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
- 8356137: trivial javadoc update
- 8356137: only inspect last frame of gif
This makes the main() method much less useful, so I removed it too. (I originally used this class to explore a folder of hundreds of gifs to look for discrepancies. But the discrepancies were rarely only on the last frame.)
This is in response to:
https://github.com/openjdk/jdk/pull/25044#discussion_r2109298270
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/25264/files
- new: https://git.openjdk.org/jdk/pull/25264/files/3d94c434..3750e58e
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=25264&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=25264&range=02-03
Stats: 262 lines in 4 files changed: 152 ins; 67 del; 43 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