-
Bug
-
Resolution: Fixed
-
P2
-
6
-
b77
-
x86
-
windows_xp
FULL PRODUCT VERSION :
java version "1.6.0-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-rc-b70)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b70, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Windows XP Professional
Version 2002
Service Pack 2
A DESCRIPTION OF THE PROBLEM :
The attached code (Areatest.java) creates an Area and then rotates it. The code works on jdk1.5.0_01 but fails on jdk1.6.0_rc.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and run the AreaTest with jdk's in question
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The AreaTest runs OK with jdk1.5.0 and fails with jdk1.6.0_rc.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
C:\java\jdk1.6.0\bin>java AreaTest
this == Curve[1, (-1470.6331787109348, -13679.261718749998), (1470.6331787109348, 13679.261718749998), D]
that == Curve[2, (-1470.6331787109252, -13679.261718749998), (-1470.63317871093, -13679.261718749998), (-1470.6331787109
348, -13679.261718749998), U]
target range = -13679.261718749998=>-13679.261718749998
Exception in thread "main" java.lang.InternalError: backstepping from -13679.261718749998 to -13679.261718749998
at sun.awt.geom.Curve.compareTo(Curve.java:457)
at sun.awt.geom.Order1.compareTo(Order1.java:197)
at sun.awt.geom.Edge.compareTo(Edge.java:72)
at sun.awt.geom.AreaOp.pruneEdges(AreaOp.java:260)
at sun.awt.geom.AreaOp.calculate(AreaOp.java:141)
at java.awt.geom.Area.pathToCurves(Area.java:173)
at java.awt.geom.Area.transform(Area.java:492)
at AreaTest.<init>(areaTest.java:30)
at AreaTest.main(areaTest.java:38)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.geom.GeneralPath;
import java.awt.geom.Area;
import java.awt.geom.AffineTransform;
public class AreaTest {
public AreaTest() {
double angle = Math.PI / 8d;
AffineTransform t = new AffineTransform();
t.rotate(angle);
GeneralPath path = new GeneralPath();
path.moveTo( -1470.6331984752417f, -13679.261247085042f);
path.quadTo( -3303.018649465366f, -13679.261247085042f, -5320.065076739477f,
-12843.77326097191f);
path.quadTo( -14301.0980122817f, -9123.707614950872f, -8981.032935542218f,
3720.065646021036f);
path.quadTo( -7001.947665555501f, 8498.000145915787f, -4516.23223633003f,
10983.71557514126f);
path.quadTo( -3069.6527602956367f, 12430.295051175652f,
-1451.4908513919768f, 13100.559659959084f);
path.quadTo( -54.38163118565376f, 13679.261247085042f, 1470.6331984752403f,
13679.261247085042f);
path.closePath();
Area area = new Area(path);
for (int i = 0; i < 8; i++) {
area.transform(t);
}
System.out.println("Works with jdk1.5.0");
}
public static void main(String[] args) {
AreaTest areatest = new AreaTest();
}
}
---------- END SOURCE ----------
Release Regression From : 5.0
The above release value was the last known release where this
bug was known to work. Since then there has been a regression.
java version "1.6.0-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-rc-b70)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b70, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Windows XP Professional
Version 2002
Service Pack 2
A DESCRIPTION OF THE PROBLEM :
The attached code (Areatest.java) creates an Area and then rotates it. The code works on jdk1.5.0_01 but fails on jdk1.6.0_rc.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and run the AreaTest with jdk's in question
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The AreaTest runs OK with jdk1.5.0 and fails with jdk1.6.0_rc.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
C:\java\jdk1.6.0\bin>java AreaTest
this == Curve[1, (-1470.6331787109348, -13679.261718749998), (1470.6331787109348, 13679.261718749998), D]
that == Curve[2, (-1470.6331787109252, -13679.261718749998), (-1470.63317871093, -13679.261718749998), (-1470.6331787109
348, -13679.261718749998), U]
target range = -13679.261718749998=>-13679.261718749998
Exception in thread "main" java.lang.InternalError: backstepping from -13679.261718749998 to -13679.261718749998
at sun.awt.geom.Curve.compareTo(Curve.java:457)
at sun.awt.geom.Order1.compareTo(Order1.java:197)
at sun.awt.geom.Edge.compareTo(Edge.java:72)
at sun.awt.geom.AreaOp.pruneEdges(AreaOp.java:260)
at sun.awt.geom.AreaOp.calculate(AreaOp.java:141)
at java.awt.geom.Area.pathToCurves(Area.java:173)
at java.awt.geom.Area.transform(Area.java:492)
at AreaTest.<init>(areaTest.java:30)
at AreaTest.main(areaTest.java:38)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.geom.GeneralPath;
import java.awt.geom.Area;
import java.awt.geom.AffineTransform;
public class AreaTest {
public AreaTest() {
double angle = Math.PI / 8d;
AffineTransform t = new AffineTransform();
t.rotate(angle);
GeneralPath path = new GeneralPath();
path.moveTo( -1470.6331984752417f, -13679.261247085042f);
path.quadTo( -3303.018649465366f, -13679.261247085042f, -5320.065076739477f,
-12843.77326097191f);
path.quadTo( -14301.0980122817f, -9123.707614950872f, -8981.032935542218f,
3720.065646021036f);
path.quadTo( -7001.947665555501f, 8498.000145915787f, -4516.23223633003f,
10983.71557514126f);
path.quadTo( -3069.6527602956367f, 12430.295051175652f,
-1451.4908513919768f, 13100.559659959084f);
path.quadTo( -54.38163118565376f, 13679.261247085042f, 1470.6331984752403f,
13679.261247085042f);
path.closePath();
Area area = new Area(path);
for (int i = 0; i < 8; i++) {
area.transform(t);
}
System.out.println("Works with jdk1.5.0");
}
public static void main(String[] args) {
AreaTest areatest = new AreaTest();
}
}
---------- END SOURCE ----------
Release Regression From : 5.0
The above release value was the last known release where this
bug was known to work. Since then there has been a regression.
- relates to
-
JDK-4632108 Area.transform and Area.createTransformedArea should maintain double precision
-
- Resolved
-