Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
些細な修正, NMZ.t の fclose() 忘れ修正
- From: Tadamasa Teranishi <yw3t-trns@xxxxxxxxxxxxxxx>
- Date: Tue, 20 Jan 2004 19:22:31 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 03574
寺西です。
些細な修正を行いました。修正箇所は以下のとおりです。
(stable-2-0, HEAD 共通)
・NMZ.t ファイルで fseek() に失敗した場合、ファイルを閉じていないバグ
を修正しました。
・ループの判定条件の順番を変更しました。
char buff[BUFSIZE];
buff[] に値が設定される。
for (i = 0; buff[i] && i < BUFSIZE; i++) {
}
ループ判定が 2つの条件の AND となっている場合、左から判断を行い
ます。上記の例では buff[] の中身に 0 がもしない場合、i < BUFSIZE
の判定の前に buff[i] が評価されるので、i が BUFSIZE の場合、
buff[BUFSIZE] を参照してしまいます。
この動作は正しくありません。
for (i = 0; i < BUFSIZE && buff[i]; i++) {
}
先に i の判断を行うことで、この問題を回避できます。
これは、左が偽の場合、右は評価されないということが前提です。
# 処理系依存の気もしますが、普通はこうなります。
# 最適化オプションで評価順番が変わるかもしれません。
# -> どなたか詳しい方いらっしゃいませんか?
・安全上の理由により、バッファの初期化を追加しました。
(念のため程度です。)
これらは気になったところのみ修正していますので、漏れもあるでしょう。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E