[スレッド全体]

2008/11/21 (金) 10:16:17 げんた  
INCM1.23c
[5464] ANSI版の更新履歴について
リリース時のために変更履歴をWikiのHistoryページに記入するようにしていたのですが,最近誰も更新してくれないのでHistory/x.x.x.x のページには1つしか記入されておりません.

自分でSubversionのlogから復元しようかとも思いましたが掲示板の当該記事を見つけるのが難しそうなので,ここ半年のANSI版のcommit状況を把握している人がいましたらどなたか更新していただけないでしょうか.

2008/11/23 (日) 00:25:37 なすこじ  
Mozilla/4.0 (compatible; MSIE 6.0; KDDI-MA33) Opera 8.60 [ja]
[5470] Re:ANSI版の更新履歴について
すみません。多忙な上携帯しかない状態なのであまり確認できてないです m(_ _)m
ぱっと見では私絡みの所はOKと思います。
 
その他では、以下をコミットして欲しいです。
 #1849852 #if(0)でC/C++アウトライン解析に失敗
 
また、できれば以下のレビューもお願いしたいです。
 2002211 長すぎるファイルパスのオープン・クローズで落ちる
 2124374 設定ダイアログでOKすると非アクティブなウィンドウのツールバーが全て有効となる
 
ではでは。

2008/11/23 (日) 02:47:25 げんた  
INCM1.23c
[5471] Re2:ANSI版の更新履歴について
>ぱっと見では私絡みの所はOKと思います。
Wikiですので,後ほど気づいたときでもかまいません.

>その他では、以下をコミットして欲しいです。
> #1849852 #if(0)でC/C++アウトライン解析に失敗

ああっ,すいません(^^ゞ
sakura/trunk#1471でcommitしました.

>また、できれば以下のレビューもお願いしたいです。
> 2002211 長すぎるファイルパスのオープン・クローズで落ちる
> 2124374 設定ダイアログでOKすると非アクティブなウィンドウのツールバーが全て有効となる

差分を確認の上,Patchesにコメントを追記しました.
2124374の方はcommitしても良いと思います.

2008/11/24 (月) 02:31:18 なすこじ  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)
[5472] Re3:ANSI版の更新履歴について
#2002211を更新しました。

--

チェックをDoModal...()の関数からGetOpenFileNameRecover()/GetSaveFileName
Recover()
に移動しました。
また、バックアップファイル作成時のファイルパスもチェックするようにしました。

前回は気が付きませんでしたが、上書き確認の後にパス長確認になっています。
なので、フックを使わない場合上書き確認でOKした後パス長でエラーとなります。
フックを使う場合、プロシージャ内で_MAX_PATH未満にパスを切り詰めているので
上書き確認できず、たまたまパス長エラーだけが表示されます。
(切り詰めたパス名と同名ファイルがあると上書き確認される)

セーブダイアログは必ずフックを使用しプロシージャ内でもパス長チェックする
のが理想的と思いますが、今回そこまでは修正していません。

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

--

悩ましい感じもするので、長引くようなら#2002211は次回リリースに持ち越しましょう (^^;

2008/11/24 (月) 14:05:14 げんた  
INCM1.23c
[5475] Re4:ANSI版の更新履歴について
>前回は気が付きませんでしたが、上書き確認の後にパス長確認になっています。
>なので、フックを使わない場合上書き確認でOKした後パス長でエラーとなります。
>フックを使う場合、プロシージャ内で_MAX_PATH未満にパスを切り詰めているので
>上書き確認できず、たまたまパス長エラーだけが表示されます。
>(切り詰めたパス名と同名ファイルがあると上書き確認される)

OFNHookProc()のcase CDN_FILEOK: 処理のところですね.確かに...

>セーブダイアログは必ずフックを使用しプロシージャ内でもパス長チェックする
>のが理想的と思いますが、今回そこまでは修正していません。

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

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

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

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

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行目の拡張子置換の各ループ毎に長さチェックが必要だと思います.

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

ではでは。

2008/11/25 (火) 23:48:02 げんた  
INCM1.23c
[5478] Re6:ANSI版の更新履歴について
>> 長さチェックが必要だと思います.
>対処したパッチを作成しました。

確認しましたが,拡張子置換でのエラーチェックで break が抜けているようです.
それ以外はOKかと思います.

2008/11/26 (水) 00:35:37 なすこじ  
Mozilla/4.0 (compatible; MSIE 6.0; KDDI-MA33) Opera 8.60 [ja]
[5480] Re7:ANSI版の更新履歴について
▼ げんたさん
> >> 長さチェックが必要だと思います.
> >対処したパッチを作成しました。

> 確認しましたが,拡張子置換でのエラーチェックで break が抜けているようです.
> それ以外はOKかと思います.

 
何度もすみません m(_ _)m
明日修正します。

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