これが私の比較的単純なシナリオです。条件付きを保存して、コードを少し整理できるかどうか疑問に思っています。他の誰かが書いた製品コードで、私は片付け中です。fclose がまったくなかったので、条件付きの fclose() 行を追加しただけです。
FILE *fp;
struct stat sb;
/* snipped code */
if (((fp = fopen (config_file, "r+")) == NULL) || (fstat (fileno (fp), &sb))) {
syslog (LOG_ERR, "Fault. Unable to read config file");
if (fp != NULL) {
fclose (fp);
}
return -1;
}
/* code carries on after this */
if(fp != null)
問題は、コードに を含める必要があるかどうかです。fclose(fp)
チェックせずに実行することの意味は何ですか? 私は C89 標準を読みましたが、結果がどうなるかはわかりませんでした。
事前に乾杯
スティーブ