ole32: Make IEnumSTATSTG functions fail when the parent is invalid.

This commit is contained in:
Vincent Povirk 2009-12-18 19:16:02 -06:00 committed by Alexandre Julliard
parent 2010e0fb28
commit 4492850200
2 changed files with 12 additions and 2 deletions

View File

@ -4513,6 +4513,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Next(
if ( (rgelt==0) || ( (celt!=1) && (pceltFetched==0) ) )
return E_INVALIDARG;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/*
* To avoid the special case, get another pointer to a ULONG value if
* the caller didn't supply one.
@ -4588,6 +4591,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Skip(
ULONG objectFetched = 0;
DirRef currentSearchNode;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/*
* Start with the node at the top of the stack.
*/
@ -4638,6 +4644,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Reset(
DirEntry storageEntry;
HRESULT hr;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/*
* Re-initialize the search stack to an empty stack
*/
@ -4672,6 +4681,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Clone(
IEnumSTATSTGImpl* newClone;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/*
* Perform a sanity check on the parameters.
*/

View File

@ -2694,10 +2694,8 @@ static void test_substorage_enum(void)
r = IStorage_DestroyElement(stg, stgname);
ok(r==S_OK, "IStorage->CreateStorage failed, hr=%08x\n", r);
if (0) { /* crashes on wine */
r = IEnumSTATSTG_Reset(ee);
ok(r==STG_E_REVERTED, "IEnumSTATSTG->Reset failed, hr=%08x\n", r);
}
IEnumSTATSTG_Release(ee);