ieframe: Allow STGM_WRITE in IPropertyStorage::Open.

Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
This commit is contained in:
Akihiro Sagawa 2022-08-12 19:45:46 +09:00 committed by Alexandre Julliard
parent e31ec426ec
commit b1281f9cf8
2 changed files with 6 additions and 1 deletions

View file

@ -718,9 +718,14 @@ static HRESULT WINAPI PropertySetStorage_Open(
DWORD grfMode,
IPropertyStorage **ppprstg)
{
const DWORD STGM_ACCESS_MASK = 0x0000000f;
InternetShortcut *This = impl_from_IPropertySetStorage(iface);
TRACE("(%s, 0x%lx, %p)\n", debugstr_guid(rfmtid), grfMode, ppprstg);
/* ole32 doesn't like STGM_WRITE */
if ((grfMode & STGM_ACCESS_MASK) == STGM_WRITE)
grfMode = (grfMode & ~STGM_ACCESS_MASK) | STGM_READWRITE;
/* Note: The |STGM_SHARE_EXCLUSIVE is to cope with a bug in the implementation. Should be fixed in ole32. */
return IPropertySetStorage_Open(This->property_set_storage,
rfmtid,

View file

@ -236,7 +236,7 @@ static void test_ReadAndWriteProperties(void)
/* Test with STGM_WRITE */
hr = IPropertySetStorage_Open(pPropSetStg, &FMTID_Intshcut, STGM_WRITE, &pPropStgWrite);
todo_wine ok(hr == S_OK, "Unable to get an IPropertyStorage for writing, hr=0x%lx\n", hr);
ok(hr == S_OK, "Unable to get an IPropertyStorage for writing, hr=0x%lx\n", hr);
if (hr == S_OK)
{