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( ...@@ -4513,6 +4513,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Next(
if ( (rgelt==0) || ( (celt!=1) && (pceltFetched==0) ) ) if ( (rgelt==0) || ( (celt!=1) && (pceltFetched==0) ) )
return E_INVALIDARG; return E_INVALIDARG;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/* /*
* To avoid the special case, get another pointer to a ULONG value if * To avoid the special case, get another pointer to a ULONG value if
* the caller didn't supply one. * the caller didn't supply one.
...@@ -4588,6 +4591,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Skip( ...@@ -4588,6 +4591,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Skip(
ULONG objectFetched = 0; ULONG objectFetched = 0;
DirRef currentSearchNode; DirRef currentSearchNode;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/* /*
* Start with the node at the top of the stack. * Start with the node at the top of the stack.
*/ */
...@@ -4638,6 +4644,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Reset( ...@@ -4638,6 +4644,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Reset(
DirEntry storageEntry; DirEntry storageEntry;
HRESULT hr; HRESULT hr;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/* /*
* Re-initialize the search stack to an empty stack * Re-initialize the search stack to an empty stack
*/ */
...@@ -4672,6 +4681,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Clone( ...@@ -4672,6 +4681,9 @@ static HRESULT WINAPI IEnumSTATSTGImpl_Clone(
IEnumSTATSTGImpl* newClone; IEnumSTATSTGImpl* newClone;
if (This->parentStorage->reverted)
return STG_E_REVERTED;
/* /*
* Perform a sanity check on the parameters. * Perform a sanity check on the parameters.
*/ */
......
...@@ -2694,10 +2694,8 @@ static void test_substorage_enum(void) ...@@ -2694,10 +2694,8 @@ static void test_substorage_enum(void)
r = IStorage_DestroyElement(stg, stgname); r = IStorage_DestroyElement(stg, stgname);
ok(r==S_OK, "IStorage->CreateStorage failed, hr=%08x\n", r); ok(r==S_OK, "IStorage->CreateStorage failed, hr=%08x\n", r);
if (0) { /* crashes on wine */
r = IEnumSTATSTG_Reset(ee); r = IEnumSTATSTG_Reset(ee);
ok(r==STG_E_REVERTED, "IEnumSTATSTG->Reset failed, hr=%08x\n", r); ok(r==STG_E_REVERTED, "IEnumSTATSTG->Reset failed, hr=%08x\n", r);
}
IEnumSTATSTG_Release(ee); 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