Module: wine Branch: master Commit: 44928502007fe624998ee1d206c8ce7cf20b9ab2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=44928502007fe624998ee1d206...
Author: Vincent Povirk vincent@codeweavers.com Date: Fri Dec 18 19:16:02 2009 -0600
ole32: Make IEnumSTATSTG functions fail when the parent is invalid.
---
dlls/ole32/storage32.c | 12 ++++++++++++ dlls/ole32/tests/storage32.c | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 7d267b6..e21acf1 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -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. */ diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c index 766c83c..f8a6134 100644 --- a/dlls/ole32/tests/storage32.c +++ b/dlls/ole32/tests/storage32.c @@ -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);