You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/10/20 07:03:04 UTC

svn commit: r465993 - in /incubator/harmony/enhanced/classlib/trunk/modules/awt/src: main/java/common/java/awt/geom/AffineTransform.java test/api/java/common/java/awt/geom/AffineTransformTest.java

Author: mloenko
Date: Thu Oct 19 22:03:03 2006
New Revision: 465993

URL: http://svn.apache.org/viewvc?view=rev&rev=465993
Log:
applied patch from HARMONY-1405
[classlib][awt] AffineTransform.transform(Point2D[], int, Point2D[], int, int) expected NPE

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/geom/AffineTransform.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/geom/AffineTransformTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/geom/AffineTransform.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/geom/AffineTransform.java?view=diff&rev=465993&r1=465992&r2=465993
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/geom/AffineTransform.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/geom/AffineTransform.java Thu Oct 19 22:03:03 2006
@@ -421,10 +421,22 @@
 
     public void transform(Point2D[] src, int srcOff, Point2D[] dst, int dstOff, int length) {
         while (--length >= 0) {
-            dst[dstOff] = transform(src[srcOff++], dst[dstOff++]);
+            Point2D srcPoint = src[srcOff++]; 
+            double x = srcPoint.getX();
+            double y = srcPoint.getY();
+            Point2D dstPoint = dst[dstOff]; 
+            if (dstPoint == null) {
+                if (srcPoint instanceof Point2D.Double) {
+                    dstPoint = new Point2D.Double();
+                } else {
+                    dstPoint = new Point2D.Float();
+                }
+            }
+            dstPoint.setLocation(x * m00 + y * m01 + m02, x * m10 + y * m11 + m12);
+            dst[dstOff++] = dstPoint;
         }
     }
-
+    
     public void transform(double[] src, int srcOff, double[] dst, int dstOff, int length) {
         while (--length >= 0) {
             double x = src[srcOff++];

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/geom/AffineTransformTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/geom/AffineTransformTest.java?view=diff&rev=465993&r1=465992&r2=465993
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/geom/AffineTransformTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/geom/AffineTransformTest.java Thu Oct 19 22:03:03 2006
@@ -642,7 +642,7 @@
         }
     }
 
-    public void testTransform2() {
+    public void testTransformPointArray() {
         AffineTransform at = new AffineTransform(0, 1, -2, 0, 3, 4);
         Point2D[] src = new Point2D[]{
                 null,
@@ -655,6 +655,35 @@
         assertEquals(new Point2D.Float(1, 5), dst[3]);
     }
 
+    public void testTransformPointArrayBad() {
+        // Regression test HARMONY-1405
+        
+        AffineTransform at = new AffineTransform();
+        try {
+            at.transform(
+                    new Point2D[] { null, null, null, null },
+                    0,
+                    new Point2D[] { null, null, null, null },
+                    -1,
+                    1);
+            fail("Expected NPE");
+        } catch (NullPointerException e) {
+            // expected
+        }
+        
+        try {
+            at.transform(
+                    new Point2D[] { null, null, null, null },
+                    1,
+                    new Point2D[] { null, null, null, null },
+                    10,
+                    1);
+            fail("Expected NPE");
+        } catch (NullPointerException e) {
+            // expected
+        }        
+    }
+    
     public void testTransform3() {
         AffineTransform at = new AffineTransform(0, 1, -2, 0, 3, 4);
         double[] src = new double[]{0, 0, 0, 0, 0, 0, 1, 1, 0, 0};