>>446
リソース確保・解放するレイヤーとそれを使って処理を行うレイヤーを分ければよくない?

f(...){
p = malloc(...);
g(p, …);
free(p);
}

g(…) {
...
if(...) return;
...
}

ifのネストが浅くなっても逆に関数のネストが深くなりすぎて読みにくくなる側面があるということなのかな?