>>707
んー ログ出力と解放で長くなるのは、ワークをstructに纏めて別関数に切り出せば短くできると思うんだけど どうかな

ifブロックに処理の本体を入れたくないのは同意
例外的な処理をブロック内に書くなら
>>705の下段のほうの書き方ですね

他の別手段となると、setjmp,longjmpかなぁ
安易にオススメはしかねますが