Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

些細な修正, NMZ.t の fclose() 忘れ修正



寺西です。

些細な修正を行いました。修正箇所は以下のとおりです。
(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