_ [comp] .NET vs Mono 1.1.13.6

Mono 1.1.13.6 になって Mono 1.1.13.1 のときの問題は解消されたようだ。けど、また別の問題が発生。これもファイルダイアログを開こうとするとクラッシュ。

Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range.
in <0x00019> System.Windows.Forms.Mime:CheckForBinaryOrText ()
in <0x00095> System.Windows.Forms.Mime:GoByFileName ()
in <0x0005e> System.Windows.Forms.Mime:StartByFileName (System.String filename)
in <0x00036> System.Windows.Forms.Mime:GetMimeTypeForFile (System.String filename)
in <0x00032> System.Windows.Forms.MimeIconEngine:GetIconIndexForFile (System.String full_filename)
in <0x00238> System.Windows.Forms.MWFFileView:DoOneFileInfo (System.IO.FileInfo fileInfo)
in <0x003c9> System.Windows.Forms.MWFFileView:UpdateFileViewByDirectoryInfo (System.IO.DirectoryInfo inputDirectoryInfo)
in <0x00139> System.Windows.Forms.MWFFileView:UpdateFileView (System.Object directoryInfo_or_string)
in (wrapper remoting-invoke-with-check) System.Windows.Forms.MWFFileView:UpdateFileView (object)
in <0x001c8> System.Windows.Forms.FileDialog:ChangeDirectory (System.Object sender, System.String path_or_special_case)
in <0x00036> System.Windows.Forms.FileDialog:set_InitialDirectory (System.String value)
in (wrapper remoting-invoke-with-check) System.Windows.Forms.FileDialog:set_InitialDirectory (string)

ちょっと調べてみるとディレクトリに 0 でないサイズのファイルがあるとクラッシュする。CheckForBinaryOrText では先頭 32 バイトを見てバイナリかテキストか判断しているようだ。ひとまず処理をはしょってバイナリ決め打ちにしてやったらクラッシュしなくなった。

_ [debian] mono 1.1.13.6-3vd1

超手抜きパッチ vd_dirty-workaround-2.dpatch を当てて作成。

_ [debian] firefox 1.5.dfsg+1.5.0.2-2vd1

を当てて作成。Bugzilla ORG 317275So perhaps something like this は取り込まれたようだ。