GSFinderのバグ検証(2)

えーと、見つけました。ポインタの初期化ミス。
バグ検証(1)で見つけたメモリ確保部分はCreateAppList2()という関数での処理なんですが……まあ、数字が付いてることから判るとおり、もう1つ、ほとんど同じ内容でポインタの初期化に失敗しているCreateAppList()という関数がありました。
CreateAppList2()のメモリ確保のコードはこうなっているのですが

//4.アプリケーションパス
lpList->lpszAppPath = new TCHAR[wcslen(szAppPath)+1];
wcscpy(lpList->lpszAppPath, szAppPath);
//5.コマンドライン
lpList->lpszCommand = new TCHAR[wcslen(szCommand)+1];
wcscpy(lpList->lpszCommand, szCommand);
//6.アイコン
lpList->lpszIconPath = new TCHAR[wcslen(szIconPath)+1];
lpList->nIconID = nIconID;
//7.イメージリストインデックス
lpList->nImageIndex = 0;

CreateAppList()ではこうなっていました。

//4.アプリケーションパス
lpList->lpszAppPath = new TCHAR[wcslen(szAppPath)+1];
wcscpy(lpList->lpszAppPath, szAppPath);
//5.コマンドライン
lpList->lpszCommand = new TCHAR[wcslen(szCommand)+1];
wcscpy(lpList->lpszCommand, szCommand);
//6.イメージリストインデックス
lpList->nImageIndex = 0;

こんなのぱっと見で見分けつきません(泣)。
おまけにCreateAppList2()のほうをよくよく見直せば、lpList->lpszIconPathはメモリ確保だけしていて、中身にデータをコピーしてないし、さらによく見れば、長さの計算に使ってるszIconPathの中身が初期化されていないっぽいし……。
とりあえずバグは修正できましたが、これは、時間を見つけてしっかりチェックしないといけないみたいですね。orz