Skip to content
Snippets Groups Projects
Commit 992234e0 authored by Ray Molenkamp's avatar Ray Molenkamp Committed by Thomas Dinges
Browse files

Fix #114906 invalid reuse of shell_link


shell_link was being reused, sometimes returning the previous
data causing links that were not ours to be updated.

Co-authored-by: default avatarHarley Acheson <harley.acheson@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/114924
parent 52678afa
Branches
Tags
No related merge requests found
......@@ -58,17 +58,19 @@ bool BLI_windows_update_pinned_launcher(const char *launcher_path)
std::wstring search_path = quick_launch_folder_path;
CoTaskMemFree(quick_launch_folder_path);
Microsoft::WRL::ComPtr<IShellLinkW> shell_link;
if (CoCreateInstance(__uuidof(ShellLink), NULL, CLSCTX_ALL, IID_PPV_ARGS(&shell_link)) != S_OK) {
return false;
}
for (auto const &dir_entry : std::filesystem::recursive_directory_iterator(search_path)) {
Microsoft::WRL::ComPtr<IPersistFile> persist_file;
if (shell_link.As(&persist_file) != S_OK) {
return false;
}
Microsoft::WRL::ComPtr<IShellLinkW> shell_link;
if (CoCreateInstance(__uuidof(ShellLink), NULL, CLSCTX_ALL, IID_PPV_ARGS(&shell_link)) != S_OK)
{
return false;
}
Microsoft::WRL::ComPtr<IPersistFile> persist_file;
if (shell_link.As(&persist_file) != S_OK) {
return false;
}
for (auto const &dir_entry : std::filesystem::recursive_directory_iterator(search_path)) {
if (persist_file->Load(dir_entry.path().c_str(), STGM_READWRITE) != S_OK) {
continue;
}
......@@ -82,7 +84,7 @@ bool BLI_windows_update_pinned_launcher(const char *launcher_path)
PROPVARIANT app_model;
PropVariantInit(&app_model);
if (property_store->GetValue(PKEY_AppUserModel_ID, &app_model) == S_OK) {
if (std::wstring(BLENDER_WIN_APPID_16) == app_model.bstrVal) {
if (app_model.vt == VT_LPWSTR && std::wstring(BLENDER_WIN_APPID_16) == app_model.pwszVal) {
shell_link->SetPath(launcher_path_w);
persist_file->Save(NULL, TRUE);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment