--- old/src/java.desktop/share/classes/java/awt/geom/Path2D.java 2015-02-25 22:28:10.429013819 +0100 +++ new/src/java.desktop/share/classes/java/awt/geom/Path2D.java 2015-02-25 22:28:10.317013821 +0100 @@ -220,12 +220,13 @@ * @since 1.6 */ public Float(Shape s, AffineTransform at) { + super(); if (s instanceof Path2D) { Path2D p2d = (Path2D) s; setWindingRule(p2d.windingRule); this.numTypes = p2d.numTypes; - this.pointTypes = Arrays.copyOf(p2d.pointTypes, - p2d.pointTypes.length); + // trim arrays: + this.pointTypes = Arrays.copyOf(p2d.pointTypes, this.numTypes); this.numCoords = p2d.numCoords; this.floatCoords = p2d.cloneCoordsFloat(at); } else { @@ -237,19 +238,23 @@ } } + @Override float[] cloneCoordsFloat(AffineTransform at) { + // trim arrays: float ret[]; if (at == null) { - ret = Arrays.copyOf(this.floatCoords, this.floatCoords.length); + ret = Arrays.copyOf(floatCoords, numCoords); } else { - ret = new float[floatCoords.length]; + ret = new float[numCoords]; at.transform(floatCoords, 0, ret, 0, numCoords / 2); } return ret; } + @Override double[] cloneCoordsDouble(AffineTransform at) { - double ret[] = new double[floatCoords.length]; + // trim arrays: + double ret[] = new double[numCoords]; if (at == null) { for (int i = 0; i < numCoords; i++) { ret[i] = floatCoords[i]; @@ -1057,12 +1062,13 @@ * @since 1.6 */ public Double(Shape s, AffineTransform at) { + super(); if (s instanceof Path2D) { Path2D p2d = (Path2D) s; setWindingRule(p2d.windingRule); this.numTypes = p2d.numTypes; - this.pointTypes = Arrays.copyOf(p2d.pointTypes, - p2d.pointTypes.length); + // trim arrays: + this.pointTypes = Arrays.copyOf(p2d.pointTypes, this.numTypes); this.numCoords = p2d.numCoords; this.doubleCoords = p2d.cloneCoordsDouble(at); } else { @@ -1074,8 +1080,10 @@ } } + @Override float[] cloneCoordsFloat(AffineTransform at) { - float ret[] = new float[doubleCoords.length]; + // trim arrays: + float ret[] = new float[numCoords]; if (at == null) { for (int i = 0; i < numCoords; i++) { ret[i] = (float) doubleCoords[i]; @@ -1086,13 +1094,14 @@ return ret; } + @Override double[] cloneCoordsDouble(AffineTransform at) { + // trim arrays: double ret[]; if (at == null) { - ret = Arrays.copyOf(this.doubleCoords, - this.doubleCoords.length); + ret = Arrays.copyOf(doubleCoords, numCoords); } else { - ret = new double[doubleCoords.length]; + ret = new double[numCoords]; at.transform(doubleCoords, 0, ret, 0, numCoords / 2); } return ret;