|
@@ -0,0 +1,47 @@
|
|
|
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
+From: Shelley Vohr <[email protected]>
|
|
|
+Date: Thu, 21 Nov 2024 14:23:17 +0100
|
|
|
+Subject: Support BSTR PKEY_AppUserModel_ID in Windows Shortcuts
|
|
|
+
|
|
|
+It's possible for a shortcut link on Windows to be BSTR format;
|
|
|
+this resulted in a DCHECK previously but as of the NOTREACHED
|
|
|
+fatal migration now will crash a given app. This has created an
|
|
|
+issue for Electron, which allows providing the shortcut information
|
|
|
+to end users. This CL thus allows for supporting VT_BSTR variants
|
|
|
+for PKEY_AppUserModel_ID and mitigates a crash. One such example
|
|
|
+is https://github.com/wez/wezterm, which after this change
|
|
|
+correctly gets an appUserModelId of 'org.wezfurlong.wezterm'.
|
|
|
+
|
|
|
+Bug: N/A
|
|
|
+Change-Id: I5ad114bc345059637465b68a53a2f3f8c42de898
|
|
|
+
|
|
|
+diff --git a/base/win/shortcut.cc b/base/win/shortcut.cc
|
|
|
+index d4a54d1afdc121192f9c0321c6ced584ee066486..02f3e63d16c3324f546f6155d722900f0a81131a 100644
|
|
|
+--- a/base/win/shortcut.cc
|
|
|
++++ b/base/win/shortcut.cc
|
|
|
+@@ -289,14 +289,22 @@ bool ResolveShortcutProperties(const FilePath& shortcut_path,
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ switch (pv_app_id.get().vt) {
|
|
|
+- case VT_EMPTY:
|
|
|
++ case VT_EMPTY: {
|
|
|
+ properties->set_app_id(std::wstring());
|
|
|
+ break;
|
|
|
+- case VT_LPWSTR:
|
|
|
++ }
|
|
|
++ case VT_LPWSTR: {
|
|
|
+ properties->set_app_id(pv_app_id.get().pwszVal);
|
|
|
+ break;
|
|
|
+- default:
|
|
|
++ }
|
|
|
++ case VT_BSTR: {
|
|
|
++ BSTR bs = pv_app_id.get().bstrVal;
|
|
|
++ properties->set_app_id(std::wstring(bs, ::SysStringLen(bs)));
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ default: {
|
|
|
+ NOTREACHED() << "Unexpected variant type: " << pv_app_id.get().vt;
|
|
|
++ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|