Vincent Povirk : ole32: Remove directory entries from the tree before we free them.
Module: wine Branch: master Commit: fd993b7d9dae06740d595443a9a262da8c787020 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd993b7d9dae06740d595443a9... Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Wed Oct 28 14:06:23 2009 -0500 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; }
participants (1)
-
Alexandre Julliard