Charles Petzold のプログラミングWindows 第5版(下)のP.583にこんな感じのコードがあるのですが、if文のところはif(a)..if(d)の間違いでしょうか?
著者のホームページにあるバグリストには特に何も書いてないんですが。
http://www.charlespetzold.com/pw5/pw5faq.html


a = malloc(100);
b = malloc(100);
c = malloc(100);
d = malloc(100);
if(!a || !b || !c || !d){
  if(!a) free(a);
  if(!b) free(b);
  if(!c) free(c);
  if(!d) free(d);
  //エラー処理//
}