Il 07/10/2014 10:58, Dr. David Alan Gilbert ha scritto: > >>> > > + if (exitcode & LOADVM_EXITCODE_QUITPARENT) { >>> > > + DPRINTF("loadvm_handlers_state_main: End of loop with >>> > > QUITPARENT"); >>> > > + exitcode &= ~LOADVM_EXITCODE_QUITPARENT; >>> > > + exitcode &= LOADVM_EXITCODE_QUITLOOP; >> > >> > Either you want |=, or the first &= is useless. > Ooh nicely spotted; yes that should be |= - now I need to figure out why this > didn't break things. > > The idea is we have: > 1 outer loadvm_state loop > 2 receives packaged command > 3 inner_loadvm_state loop > 4 receives handle_listen > 5 < QUITPARENT > 6 < QUITLOOP > 7 < QUITLOOP > 8 exits > > so QUITPARENT causes it's parent to exit, and to do that > the inner loop transforms QUITPARENT into QUITLOOP as it's > exit.
Yes, that was my understanding as well. We have only two nested loops, but if we had three, should it be QUIT_PARENT or QUIT_ALL? Paolo