[
スレッド全体
]
▼
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]