]> oss.titaniummirror.com Git - tinyos-2.x.git/commit
Fix possible overwrite of state changes make in a component's Init.init()
authorR. Steve McKown <rsmckown@gmail.com>
Mon, 19 Apr 2010 22:13:15 +0000 (16:13 -0600)
committerR. Steve McKown <rsmckown@gmail.com>
Thu, 6 May 2010 15:35:13 +0000 (09:35 -0600)
commitfc1a387def2c732cb8a332103659c525c90b4778
tree75e844b67f3f7cddddc45d232b1c5ca5e4183154
parent4a8ae7d8ac1545dd2e4ce9262370b2e50aaf276b
Fix possible overwrite of state changes make in a component's Init.init()

If a component using State and providing Init is wired to MainC.SoftwareInit,
the component cannot reliably call State.forceState() inside its Init.init().
If ncc renders MainC.SoftwareInit.Init()'s fanout calling the component's
Init.init() before StateImplP's Init.init(), the latter sets the state[] array
members all to zero (S_IDLE), undoing any state change the component may have
attempted.

The easy fix is to remove the extra initiation of state[] in StateImplP's
Init.init().  Becuase state[] is a static, its elements are guaranteed to have
values of zero (S_IDLE).
tos/system/StateImplP.nc