Windows 2000 の COMDLG32.DLLのバグ?
拡張カーネル使ってる外国人の人から、Adobe Illustrator CS4辺りから、データの保存や読み出しができなくなってるという報告を受けました。
|。・ω・) 。o ( あれ?それってどっかで聞いたような症状… )
Win2000で全く使えないと思われていた CLIP STUDIO PAINT PRO
そうなんです、クリップスタジオと同じなのです。
というわけで、共通点さえわかれば解析ができます。
OPENFILENAMEA ofn; memset(&ofn,0,sizeof(ofn)); ofn.lStructSize=sizeof(ofn); ofn.lpstrFilter= "text file(*.txt)\0*.txt\0all file(*.*)\0*.*\0\0"; ofn.lpstrFile= filename; ofn.Flags= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.lpstrDefExt= "txt"; ofn.nMaxFile= 0x10000; int t1=GetOpenFileNameA(&ofn); |
試しに書いたコードはこれなんですが。Windows 2000で実行するとt1=0になります。
…が、GetLastError の返り値もゼロなのです。
どういうことか。
nMaxFile を 0xffff 以下にすると関数は成功します。
通常ファイルパスは 最大でも 32k なのですが、手を抜いたプログラマが 64Kとか、とんでもなくでかいメモリを確保して動かす処理をしたところ、Windows 2000では 異常を検出して動かなくなったというわけだったのです・ω・ なんてことだ!
数年来の謎が解けたよ!
Comments