Commit 44928502 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

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

parent 2010e0fb
......@@ -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.
*/
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment