最近使用したファイルリスト制御の不具合
問題発生時の状況について補足です。
エラー発生時の状態をデバッガで確認すると、各変数が下記のようになっていました。
szPath : L"C://PROGRA~2"
szArguments : L""
pv.bstrVal : <NULL>
szDescription : L""
どうもターゲットがProgramFilesになっているようなのですが、このようになってしまうような操作をした心当たりはありません。
ご連絡ありがとうございます。この問題の再現はできていませんが、以下のコミットにて修正を行っております。
https://github.com/WinMerge/winmerge/commit/19516532e695e882646374555c0926258d835dbf
以下のURLからダウンロード可能です。
https://ci.appveyor.com/project/sdottaka/winmerge/builds/45106215/artifacts
ファイルメニュー下の「最近使用したファイルまたはフォルダー」のリスト更新に若干の間違いがあるようです。
ソースコードで、 Src/JumpList.cpp内、GetRecentDocs関数にて、
list.push_back(Item(ucr::toTString(szPath), ucr::toTString(szArguments), ucr::toTString(pv.bstrVal), ucr::toTString(szDescription)));
とあるのですが、
pv.bstrVal
がNULLの可能性があり、その場合に、wstring = NULL; となり落ちます。
この状況になると、
・ファイルメニューを開こうとすると落ちる
・ファイルを保存しようとすると落ちる
という不具合が発生し、ほぼ何もできないようになります。
さらにアンインストールや、設定リセットしても改善されない状態になります。
if (pv.bstrVal) { list.push_back ... }
おそらくこんな感じで改善されるようになると思います。