=?iso-8859-1?Q?Mathias_St=FCmpert?= wrote:
> I think I found a bug in ShapeControl.setShapes:
>
> int len = Math.max(shs.length, shapes.length);
> for (int i=0; i<len; i++) {
> shapes[i] = shs[i];
> }
>
> That causes an ArrayIndexOutOfBoundsException in my app because the for
> loops to the max of the lengths of both arrays.
Looks like a bug to me, too. This patch should take care of
that:
diff -u -3 -p -r1.20 ShapeControl.java
--- ShapeControl.java 7 Jan 2002 18:42:55 -0000 1.20
+++ ShapeControl.java 1 May 2002 16:33:17 -0000
@@ -101,9 +101,14 @@ public class ShapeControl extends Contro
throws VisADException, RemoteException {
if (shapeSet == null) return;
if (shs != null && shs.length > 0) {
- int len = Math.max(shs.length, shapes.length);
+ final int len = Math.min(shs.length, shapes.length);
for (int i=0; i<len; i++) {
shapes[i] = shs[i];
+ }
+ if (shapes.length > shs.length) {
+ for (int i=shs.length; i < shapes.length; i++) {
+ shapes[i] = null;
+ }
}
}
changeControl(true);