ole32: Always invalidate stream objects when deleting the stream.
This commit is contained in:
parent
a2c405fa15
commit
9d0c4c971d
|
@ -823,17 +823,6 @@ static HRESULT WINAPI StorageBaseImpl_CreateStream(
|
|||
*/
|
||||
if (STGM_CREATE_MODE(grfMode) == STGM_CREATE)
|
||||
{
|
||||
StgStreamImpl *strm;
|
||||
|
||||
LIST_FOR_EACH_ENTRY(strm, &This->strmHead, StgStreamImpl, StrmListEntry)
|
||||
{
|
||||
if (strm->dirEntry == currentEntryRef)
|
||||
{
|
||||
TRACE("Stream deleted %p\n", strm);
|
||||
strm->parentStorage = NULL;
|
||||
list_remove(&strm->StrmListEntry);
|
||||
}
|
||||
}
|
||||
IStorage_DestroyElement(iface, pwcsName);
|
||||
}
|
||||
else
|
||||
|
@ -1914,6 +1903,18 @@ static HRESULT deleteStreamContents(
|
|||
IStream *pis;
|
||||
HRESULT hr;
|
||||
ULARGE_INTEGER size;
|
||||
StgStreamImpl *strm;
|
||||
|
||||
/* Invalidate any open stream objects. */
|
||||
LIST_FOR_EACH_ENTRY(strm, &parentStorage->strmHead, StgStreamImpl, StrmListEntry)
|
||||
{
|
||||
if (strm->dirEntry == indexToDelete)
|
||||
{
|
||||
TRACE("Stream deleted %p\n", strm);
|
||||
strm->parentStorage = NULL;
|
||||
list_remove(&strm->StrmListEntry);
|
||||
}
|
||||
}
|
||||
|
||||
size.u.HighPart = 0;
|
||||
size.u.LowPart = 0;
|
||||
|
|
|
@ -1121,7 +1121,7 @@ static void test_substorage_share(void)
|
|||
ok(r==S_OK, "IStorage->DestroyElement failed, hr=%08x\n", r);
|
||||
|
||||
r = IStream_Write(stm, "this shouldn't work\n", 20, NULL);
|
||||
todo_wine ok(r==STG_E_REVERTED, "IStream_Write should fail %08x\n", r);
|
||||
ok(r==STG_E_REVERTED, "IStream_Write should fail %08x\n", r);
|
||||
|
||||
IStorage_Release(stm);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue