Opened 8 years ago

Last modified 3 years ago

#3777 new defect

Idle-worker-hotkey errors after gamestart — at Version 2

Reported by: elexis Owned by:
Priority: Nice to Have Milestone: Backlog
Component: UI – In-game Keywords: simple
Cc: Patch:

Description (last modified by elexis)

Sometimes when starting a game and pressing the idle-worker hotkey, the following errors appear:

WARNING: JavaScript warning: simulation/components/GuiInterface.js line 1634
reference to undefined property data.prevUnit
ERROR: JavaScript error: simulation/components/GuiInterface.js line 1634
TypeError: data.excludeUnits is undefined
  GuiInterface.prototype.FindIdleUnits@simulation/components/GuiInterface.js:1634:1
  GuiInterface.prototype.ScriptCall@simulation/components/GuiInterface.js:1888:3
  findIdleUnit@gui/session/input.js:1730:7
  __eventhandler140 (press)@__internal(101) press:0:22
ERROR: Error calling component script function ScriptCall
ERROR: JavaScript error: gui/session/input.js line 1731
TypeError: idleUnits is undefined
  findIdleUnit@gui/session/input.js:1731:1
  __eventhandler140 (press)@__internal(101) press:0:22

The bug exists since a long time and had been reported here before #3227.

Tagging as simple since the scope is limited (input.js, GUIInterface.js).

The code should be looked at to see how these errors can occur, then finding a way to reproduce the errors reliably.

Thanks palaxin for reporting, just happened to get the error today.

Change History (2)

comment:1 by elexis, 8 years ago

Reproduce the bug by hitting alt+idle worker hotkey.

There is a keyboard bug with 0AD, at least on my ubuntu system (no matter if SDL 1.2 or 2), where the application behaves as if the alt button is pressed, when a game is started (while it actually hasn't been pressed). This keyboard bug is the cause why the error has occured only rarerly and only at gamestart before.

comment:2 by elexis, 6 years ago

Description: modified (diff)

Alpha 23 stack with the same reproduce recipe:

ERROR: JavaScript error: simulation/components/Cost.js line 48
TypeError: cmpPlayer is null
  Cost.prototype.GetBuildTime@simulation/components/Cost.js:48:19
  Repairable.prototype.GetBuildTime@simulation/components/Repairable.js:78:49
  GuiInterface.prototype.GetEntityState@simulation/components/GuiInterface.js:320:17
  GuiInterface.prototype.ScriptCall@simulation/components/GuiInterface.js:1970:1
  GetEntityState@gui/session/session.js:220:21
  findIdleUnit@gui/session/input.js:1629:20
  __eventhandler243 (press)@idleWorkerButton press:0:1
ERROR: Error calling component script function ScriptCall
ERROR: JavaScript error: gui/session/input.js line 1630
TypeError: entityState is undefined
  findIdleUnit@gui/session/input.js:1630:6
  __eventhandler243 (press)@idleWorkerButton press:0:1
Note: See TracTickets for help on using tickets.