LWJGLTextureState throws ArrayIndexOutOfBoundsException

Below is the stack trace.  Here is the code fragment in question…



            for (int i = 0; i < numTotalTexUnits; i++) {

                unitRecord = record.units;

                …

            }



This certainly looks like a problem waiting to happen: The loop variable range is numTotalTexUnits, not record.units.length.  Since I am not sure what the intent of this code is I cannot suggest a fix.  Perhaps numTotalTexUnits is supposed to be <=record.units.length.  In any case, there is a definite problem here.





–jon



===================



Thread [main] (Suspended (exception java.lang.ArrayIndexOutOfBoundsException))

com.jme.scene.state.lwjgl.LWJGLTextureState.apply() line: 842

com.jme.renderer.lwjgl.LWJGLRenderer.applyStates(com.jme.scene.state.RenderState[], com.jme.scene.Geometry) line: 1739

com.jme.renderer.lwjgl.LWJGLRenderer.draw(com.jme.scene.TriMesh) line: 975

com.jme.scene.shape.Box(com.jme.scene.TriMesh).draw(com.jme.renderer.Renderer) line: 240

com.jme.scene.shape.Box(com.jme.scene.Spatial).onDraw(com.jme.renderer.Renderer) line: 429

com.jme.scene.Node.draw(com.jme.renderer.Renderer) line: 520

com.jme.scene.Node(com.jme.scene.Spatial).onDraw(com.jme.renderer.Renderer) line: 429

com.jme.renderer.lwjgl.LWJGLRenderer.draw(com.jme.scene.Spatial) line: 1216

com.msli.jme.model.JmeDebugModel$CubeModel(com.msli.jme.model.JmeScene).doViewRender(com.msli.jme.view.JmeViewContext, double, double) line: 236

com.msli.jme.model.JmeDebugModel$CubeModel(com.msli.jme.model.JmeScene).implViewRender(com.msli.jme.view.JmeViewContext, double, double) line: 180

com.msli.jme.model.JmeTreeNode$Impl.implViewRender(com.msli.jme.view.JmeViewContext, double, double) line: 303

com.msli.jme.model.JmeTreeNode$Impl.implViewRender(java.lang.Object, double, double) line: 1

com.msli.jme.swt.view.JmeSwtView$1(com.msli.jme.view.JmeView$Base).implViewRender(com.msli.jme.view.JmeViewContext, double, double) line: 246

com.msli.jme.swt.view.JmeSwtView.implViewRender(com.msli.jme.view.JmeViewContext, double, double) line: 142

com.msli.jme.swt.view.JmeSwtView.implViewRender(java.lang.Object, double, double) line: 1

com.msli.app.model.view.ModelViewManager.implFrame(double, double) line: 133

com.msli.app.model.view.ModelViewManager.access$6(com.msli.app.model.view.ModelViewManager, double, double) line: 123

com.msli.app.model.view.ModelViewManager$FrameLooper.run() line: 116

org.eclipse.swt.widgets.RunnableLock.run() line: 35

org.eclipse.ui.internal.UISynchronizer(org.eclipse.swt.widgets.Synchronizer).runAsyncMessages(boolean) line: 133

org.eclipse.swt.widgets.Display.runAsyncMessages(boolean) line: 3855

org.eclipse.swt.widgets.Display.readAndDispatch() line: 3476

org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window$IExceptionHandler, org.eclipse.swt.widgets.Display) line: 2393

org.eclipse.ui.internal.Workbench.runUI() line: 2357

org.eclipse.ui.internal.Workbench.access$4(org.eclipse.ui.internal.Workbench) line: 2209

org.eclipse.ui.internal.Workbench$5.run() line: 499

org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm, java.lang.Runnable) line: 332

org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 492

org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 149

com.msli.mapp3d.client.rcp.app.Application.start(org.eclipse.equinox.app.IApplicationContext) line: 87

org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 194

org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object) line: 110

org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object) line: 79

org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object) line: 368

org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[], java.lang.Runnable) line: 179

sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]

sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39

sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25

java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object…) line: 597

org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[], java.net.URL[]) line: 556

org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line: 511

org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line: 1284

org.eclipse.equinox.launcher.Main.main(java.lang.String[]) line: 1260