[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-2d-dev
Subject: Re: RFR: 8286093: java/awt/geom/Path2D/UnitTest.java failed with "RuntimeException: 2D bounds too sm
From: Jeremy <duke () openjdk ! java ! net>
Date: 2022-05-29 23:45:30
Message-ID: nPSrM8EomDQlJY7as8E4jnP49nanVBHbKOgVw7lhktk=.f33aba06-c450-4c2d-a2da-8d6079de7561 () github ! com
[Download RAW message or body]
> This resolves an occasional unit test failure in Path2D.UnitTest.
>
> The previous Path2D#getBounds2D(PathIterator) implementation assumed that after a \
> SEG_CLOSE the next segment would always be a SEG_MOVETO to start a new clearly \
> defined segment. But the Path2D.UnitTest created random paths that didn't follow \
> this expectation.
> This commit updates #getBounds2D(PathIterator) so it will move the cursor back to \
> the (moveX, moveY) point for the sake of calculating future segments. This appears \
> to resolve the unit test failures.
> This commit also modifies the unit test so it logs random seeds. This may help \
> developers isolate/reproduce specific failures with more certainty.
Jeremy has updated the pull request with a new target base due to a merge or a \
rebase. The pull request now contains 31 commits:
- Merge branch 'master' into JDK-8176501
- Merge pull request #3 from openjdk/master
Merge from openjdk/jdk
- Merge remote-tracking branch 'origin/master' into JDK-8176501
- Merge pull request #2 from openjdk/master
Merge openjdk/jdk
- 8176501: Method Shape.getBounds2D() incorrectly includes Bezier control points in \
bounding box
Renaming "moveX"/"moveY" to "startX"/"startY" at Laurent's suggestion.
- Merge branch 'master' into JDK-8176501
# Conflicts:
# src/java.desktop/share/classes/java/awt/geom/Path2D.java
# test/jdk/java/awt/geom/Path2D/UnitTest.java
- Merge pull request #1 from openjdk/master
Merge openjdk/jdk into mickleness/jdk
- 8176501: Method Shape.getBounds2D() incorrectly includes Bezier control points in \
bounding box
Restoring original behavior. The "10_000_000 : 10_000_000" line should never have \
been committed.
- 8176501: Method Shape.getBounds2D() incorrectly includes Bezier control points in \
bounding box
This resolves occasional unit test failures in java.awt.geom.Path2D.UnitTest. (For \
ex, see seeds 4603421469924484958L, 4596019360892069260L, 4604586530476373958L, \
4603766396818608126L)
The problem appears to be that the UnitTest class randomly creates PathIterator \
segments in a way that can place lines/quads/cubics immediately after a SEG_CLOSE. \
That is: after a SEG_CLOSE there was no SEG_MOVETO as new segments followed.
The previous Path2D#getBounds2D(PathIterator) method assumed each subpath *always* \
started with a SEG_MOVETO. (I don't know if this is formally stated in a \
specification anywhere or not?) The unit test failures show this is a bad assumption. \
With this change: when a SEG_CLOSE is encountered: we reset the cursor to the last \
(moveX, moveY) point. This appears to resolve the unit test failures, which suggests \
this is consistent with what existing awt.geom classes also do.
- 8176501: Method Shape.getBounds2D() incorrectly includes Bezier control points in \
bounding box
Turn on "verbose" mode before running any tests
- ... and 21 more: https://git.openjdk.java.net/jdk/compare/3d2d0395...c3f26e9d
-------------
Changes: https://git.openjdk.java.net/jdk/pull/8828/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8828&range=03
Stats: 68 lines in 2 files changed: 37 ins; 5 del; 26 mod
Patch: https://git.openjdk.java.net/jdk/pull/8828.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8828/head:pull/8828
PR: https://git.openjdk.java.net/jdk/pull/8828
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic