[スレッド全体]

2008/6/23 (月) 11:02:28 じゅうじ  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
[5364] Re:長過ぎるパス名で落ちる
▼ なすこじさん
>  DoModal_GetOpenFileName()
>  DoModal_GetSaveFileName()
>  DoModalOpenDlg()
>  DoModalSaveDlg()

この、4個のメソッドを呼び出している所だけでしたら、28ヶ所のみでした。
呼び出すすべての前の所で0クリアしてはどうでしょう。
char szPath[_MAX_PATH + 1];
szPath[sizeof(szPath)-1] = '\0';

私ちなみに、よく分かっていないのですが、
なぜ最後1バイトでなく、2バイトクリアするのでしょうか?

2008/6/23 (月) 21:17:43 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5365] Re2:長過ぎるパス名で落ちる
▼ じゅうじさん
> なぜ最後1バイトでなく、2バイトクリアするのでしょうか?

2バイト文字で切れた場合もう1つ前もゴミとなることがあるためだったのですが、>>data:6694にて要望されたようにメッセージを表示してあげないとまずいということで、前回のものは撤回して下記のようにしようかと思います。

下記関数において、GetOpenFileNameRecover()またはGetSaveFileNameRecover()の戻り値がTRUEの時、バッファ内に'\0'が存在しなければエラーを表示してFALSEを返す。
 DoModal_GetOpenFileName()
  DoModal_GetSaveFileName()
  DoModalOpenDlg()
  DoModalSaveDlg()

上記の4箇所で.nMaxFileに_MAX_PATHを設定しているので、ここでチェックするのが良いと思ったのですが、さらに上位でチェックすべきでしょうか?

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.000][st:0.000]