VS2008化後、
CWinApp::m_pRecentFileList (最近使ったファイル)を参照しているところで、ハングアップ。
ごく一部のPCだけで発生。なんでじゃぁ~
ダメなコード
int nSize = m_pRecentFileList->GetSize();
for ( int i = 0; i < 5; ++i)
{
sprintf( szKey, "ManualSaveFile%d", i );
if (i < nSize)
func((LPSTR)(LPCTSTR)(*m_pRecentFileList)[i]);
else
SetRegStr("");
}
直したコード
if(m_pRecentFileList){ // NULLチェック
int nSize = m_pRecentFileList->GetSize();
for ( int i = 0; i < 5; ++i)
{
sprintf( szKey, "ManualSaveFile%d", i );
if (i < nSize){
CString strFileName = (*m_pRecentFileList)[i];
if (strFileName.GetLength() >0){ // 文字列の中身があるかチェック
func((LPSTR)(LPCTSTR)strFileName);
}else{
SetRegStr("");
}
}else{
SetRegStr("");
}
}
}
VC++6のときは、6年ほどの間に、1件も問い合わせが無かったので、
上記ダメコードでも大丈夫だった。
MFCが変わったんやろうけど。
まだ、この手のやつが潜んでないか心配。