All this code interfaces with C code where handling the errors is manual and huge. I could expand the code, it would double the code size, and it would be much less readable than with the CLEANUP macros. I admit it looks C-like, and I won't fight for it, but it is readable this way. No problem changing, though.