From 663168e340efe482d0e99334bf3994ed3ad6f8d6 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 28 Oct 2009 14:06:23 -0500 Subject: [PATCH 01/13] ole32: Remove directory entries from the tree before we free them. The directory entry should still be valid as long as it's in the tree. --- dlls/ole32/storage32.c | 32 +++++++++----------------------- 1 files changed, 9 insertions(+), 23 deletions(-) diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 89ae657..18ced72 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -1817,6 +1817,15 @@ static HRESULT WINAPI StorageImpl_DestroyElement( parentPropertyId, typeOfRelation); + /* + * Invalidate the property by zeroing its name member. + */ + propertyToDelete.sizeOfNameString = 0; + + StorageImpl_WriteProperty(This->base.ancestorStorage, + foundPropertyIndexToDelete, + &propertyToDelete); + return hr; } @@ -1936,15 +1945,6 @@ static HRESULT deleteStorageProperty( } while ((hr == S_OK) && (destroyHr == S_OK)); - /* - * Invalidate the property by zeroing its name member. - */ - propertyToDelete.sizeOfNameString = 0; - - StorageImpl_WriteProperty(parentStorage->base.ancestorStorage, - indexOfPropertyToDelete, - &propertyToDelete); - IStorage_Release(childStorage); IEnumSTATSTG_Release(elements); @@ -1993,20 +1993,6 @@ static HRESULT deleteStreamProperty( */ IStream_Release(pis); - /* - * Invalidate the property by zeroing its name member. - */ - propertyToDelete.sizeOfNameString = 0; - - /* - * Here we should re-read the property so we get the updated pointer - * but since we are here to zap it, I don't do it... - */ - StorageImpl_WriteProperty( - parentStorage->base.ancestorStorage, - indexOfPropertyToDelete, - &propertyToDelete); - return S_OK; } -- 1.6.3.3