Fix not using do {} while(0) trick

The do {} while(0) trick allows macros to be used like
regular functions in all cases. See stackoverflow for
details: http://stackoverflow.com/questions/257418/do-while-0-what-is-it-good-for