Thanks for pointing out the SAFE() macro to me.  One problem with this construct, however - the extra do{}while(0) layer that SAFE() adds prevents me from breaking out of the outer while(0){} loop.  I can break out with a 'goto', or we can do without SAFE() - which would you prefer?