diff --git a/ole/storage32.c b/ole/storage32.c
index 84835f172e9431abe56111a588542e0dabd28366..549264e88a61625286272756c371f2106ed448a2 100644
--- a/ole/storage32.c
+++ b/ole/storage32.c
@@ -3085,6 +3085,7 @@ StorageInternalImpl* StorageInternalImpl_Construct(
 void StorageInternalImpl_Destroy(
   StorageInternalImpl* This)
 {
+  StorageBaseImpl_Release((IStorage*)This->ancestorStorage);
   HeapFree(GetProcessHeap(), 0, This);
 }
 
@@ -5224,7 +5225,7 @@ static DWORD GetCreationModeFromSTGM(DWORD stgm)
   BOOL bSTGM_FAILIFTHERE = ! (bSTGM_CREATE || bSTGM_CONVERT);
 
   if (bSTGM_CREATE)
-    dwCreationDistribution = CREATE_NEW;
+    dwCreationDistribution = CREATE_ALWAYS;
   else if (bSTGM_FAILIFTHERE)
     dwCreationDistribution = CREATE_NEW;
   else if (bSTGM_CONVERT)