ole32: Fix crash when calling CreateStream on read only storage.
This commit is contained in:
parent
5aab52c977
commit
4a0901fb87
|
@ -979,6 +979,10 @@ static HRESULT WINAPI StorageBaseImpl_CreateStream(
|
|||
(grfMode & STGM_TRANSACTED))
|
||||
return STG_E_INVALIDFUNCTION;
|
||||
|
||||
/* Can't create a stream on read-only storage */
|
||||
if ( STGM_ACCESS_MODE( This->openFlags ) == STGM_READ )
|
||||
return STG_E_ACCESSDENIED;
|
||||
|
||||
/*
|
||||
* Check that we're compatible with the parent's storage mode
|
||||
* if not in transacted mode
|
||||
|
|
|
@ -1302,13 +1302,11 @@ void test_readonly(void)
|
|||
ok(hr == S_OK, "should succeed, res=%x\n", hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
#if 0 /* crashes on Wine */
|
||||
/* CreateStream on read-only storage, name exists */
|
||||
hr = IStorage_CreateStream( stg2, streamW, STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_READ, 0, 0, &stream );
|
||||
ok(hr == STG_E_ACCESSDENIED, "should fail, res=%x\n", hr);
|
||||
if (SUCCEEDED(hr))
|
||||
IStream_Release(stream);
|
||||
#endif
|
||||
|
||||
/* CreateStream on read-only storage, name does not exist */
|
||||
hr = IStorage_CreateStream( stg2, storageW, STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_READ, 0, 0, &stream );
|
||||
|
|
Loading…
Reference in New Issue