[スレッド全体]

2008/11/25 (火) 15:44:36 なすこじ  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)
[5476] Re5:ANSI版の更新履歴について
▼ げんたさん
> >セーブダイアログは必ずフックを使用しプロシージャ内でもパス長チェックする
> >のが理想的と思いますが、今回そこまでは修正していません。

> まあ,微妙なところなのでこのままでも良いのではないでしょうか.


そうですね。元々_MAX_PATHを超えないようにしてあったのでこのままにしておきます。

> >260バイト以上のパス長のファイルは、"C:\a"のような1文字フォルダに長い
> >ファイル名のファイルを作成しフォルダ名を変更すると作成可能です。

> 作成可能ではありますが,Windowsにアクセスを拒否されるみたいです.


ファイル名に2バイト文字があればいけるのではないでしょうか?
私の所のWin2k SP4では、266バイトのパス長のファイルがunicode版で編集可能です。

> もう一点,普通はやらないと思いますが,バックアップの詳細設定を使用して(CEditDoc::FormatBackUpPath()のm_bBackUpPathAdvanced=1の場合),たとえば $0_$0_$0_$0_$0_$0_$0_$0_$0_$0といったパターンが指定されると,バックアップ文字列がファイル名の何倍にもなり,1024バイトの内部バッファを突破して悲しいことになります.ですので,厳密に言えばCEditDoc.cppの1747行目付近のファイル名・ディレクトリ名置換,および1778行目の拡張子置換の各ループ毎に長さチェックが必要だと思います.

対処したパッチを作成しました。

ではでは。

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