Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Division by zero in inventory code from TTA workstation #2188

Closed
Cervator opened this issue Feb 28, 2016 · 2 comments · Fixed by Terasology-Archived/WoodAndStone#43
Closed
Labels
Type: Bug Issues reporting and PRs fixing problems

Comments

@Cervator
Copy link
Member

Noticed while testing another potential Alpha RC

Started TTA, made an axe, got two wooden trunks, placed them adjacent, "blessed" them via right click of the axe so they'd turn into a workstation, e clicked it to access crafting, and boom:

00:50:46.978 [Saving-0] INFO  o.t.p.internal.SaveTransaction - Save game finished
00:51:32.575 [main] INFO  o.t.w.b.internal.BlockManagerImpl - Registered BlockFamily[WoodAndStone:GrandMapleLog]
00:51:32.576 [main] INFO  o.t.w.b.internal.BlockManagerImpl - Registered Block WoodAndStone:GrandMapleLog with id 1082
00:51:43.540 [main] ERROR o.terasology.engine.TerasologyEngine - Uncaught exception, attempting clean game shutdown
java.lang.ArithmeticException: / by zero
    at org.terasology.rendering.nui.layers.ingame.inventory.InventoryGrid.getPreferredContentSize(InventoryGrid.java:95) ~[na:na]
    at org.terasology.rendering.nui.internal.CanvasImpl.calculateRestrictedSize(CanvasImpl.java:347) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.layouts.ScrollableArea.onDraw(ScrollableArea.java:76) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.layouts.relative.RelativeLayout.onDraw(RelativeLayout.java:78) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.layouts.relative.RelativeLayout.onDraw(RelativeLayout.java:78) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.CoreScreenLayer.onDraw(CoreScreenLayer.java:107) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.rendering.nui.internal.NUIManagerInternal.render(NUIManagerInternal.java:377) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.engine.modes.StateIngame.renderUserInterface(StateIngame.java:234) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.engine.modes.StateIngame.render(StateIngame.java:218) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.engine.subsystem.lwjgl.LwjglGraphics.postUpdate(LwjglGraphics.java:189) ~[engine-1.0.0-SNAPSHOT.jar:1644, develop, 1644, alpha]
    at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:423) ~[engine-1.0.0-SNAPSHOT.jar:1644, origin/develop, 1644]
    at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:369) ~[engine-1.0.0-SNAPSHOT.jar:1644, origin/develop, 1644]
    at org.terasology.engine.Terasology.main(Terasology.java:154) ~[Terasology.jar:1644, origin/develop, 1644]
00:51:43.540 [main] INFO  o.terasology.engine.TerasologyEngine - Shutting down Terasology...
00:51:43.595 [main] INFO  o.t.p.i.ReadWriteStorageManager - Saving - Creating game snapshot

Figuring it is probably a minor bug either resulting in an action working on a no-slot inventory or something not hardened well. Or both.

@Cervator Cervator added the Type: Bug Issues reporting and PRs fixing problems label Feb 28, 2016
@Cervator Cervator added this to the v1.0.0 milestone Feb 28, 2016
@ojsheikh
Copy link
Contributor

ojsheikh commented Mar 7, 2016

This occurs because the CraftingStation skin does define a layout for ItemIcon. Perhaps this broke when the inventory code was moved from engine to core. An easy fix was to inherit from inventoryDefault, but perhaps a check should be added here for the case in which the preferred icon width is zero.

@Cervator
Copy link
Member Author

Cervator commented Mar 7, 2016

Thanks! Tested out the fix and it works :-)

I submitted #2212 to get your mentioned zero check added, up for doing that sometime? I figure it might be needed in more places than one.

I also noticed #2213 while testing - I don't see the actual product listed in the g crafting menu

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug Issues reporting and PRs fixing problems
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants