fsm: term: safer iteration to remove all child FSMs

When terminating child FSMs, restart iteration after every child, to make
sure that we don't terminate a child twice. Terminating one child may emit
events that in turn terminates other children.

I created this patch because at first it looked like the cause of a bug,
which turned out not to be the case. So I have no actual use case of this
situation, but it does generally make sense to me, so submitting this.

Change-Id: I00990b47e42eeb43707a9a42abcd9df52fe5f483
1 file changed