=?UTF-8?Q?Fr=C3=A9d=C3=A9ric=20Delanoy=20?=: ole32: Add helper for string table memory freeing.

Alexandre Julliard julliard at winehq.org
Tue Nov 27 14:30:50 CST 2012


Module: wine
Branch: master
Commit: 02da0411e148ccb21ab2dc8f72764d3491adb7aa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=02da0411e148ccb21ab2dc8f72764d3491adb7aa

Author: Frédéric Delanoy <frederic.delanoy at gmail.com>
Date:   Mon Nov 26 12:41:41 2012 +0100

ole32: Add helper for string table memory freeing.

---

 dlls/ole32/filemoniker.c |   43 +++++++++++++++++--------------------------
 1 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/dlls/ole32/filemoniker.c b/dlls/ole32/filemoniker.c
index b3a5cc2..37c86ca 100644
--- a/dlls/ole32/filemoniker.c
+++ b/dlls/ole32/filemoniker.c
@@ -657,6 +657,15 @@ FileMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar,
     return MK_S_REDUCED_TO_SELF;
 }
 
+static void free_stringtable(LPOLESTR *stringTable)
+{
+    int i;
+
+    for (i=0; stringTable[i]!=NULL; i++)
+        CoTaskMemFree(stringTable[i]);
+    CoTaskMemFree(stringTable);
+}
+
 /******************************************************************************
  *        FileMoniker_ComposeWith
  */
@@ -731,12 +740,8 @@ FileMonikerImpl_ComposeWith(IMoniker* iface, IMoniker* pmkRight,
         }
         else res = E_OUTOFMEMORY;
 
-        for(i=0; strDec1[i]!=NULL;i++)
-            CoTaskMemFree(strDec1[i]);
-        for(i=0; strDec2[i]!=NULL;i++)
-            CoTaskMemFree(strDec2[i]);
-        CoTaskMemFree(strDec1);
-        CoTaskMemFree(strDec2);
+        free_stringtable(strDec1);
+        free_stringtable(strDec2);
 
         CoTaskMemFree(str1);
         CoTaskMemFree(str2);
@@ -1004,17 +1009,9 @@ FileMonikerImpl_CommonPrefixWith(IMoniker* iface,IMoniker* pmkOther,IMoniker** p
         {
             for(i=0;i<sameIdx;i++)
                 strcatW(commonPath,stringTable1[i]);
-    
-            for(i=0;i<nb1;i++)
-                CoTaskMemFree(stringTable1[i]);
-    
-            CoTaskMemFree(stringTable1);
-    
-            for(i=0;i<nb2;i++)
-                CoTaskMemFree(stringTable2[i]);
-    
-            CoTaskMemFree(stringTable2);
-    
+
+            free_stringtable(stringTable1);
+            free_stringtable(stringTable2);
             ret = CreateFileMoniker(commonPath,ppmkPrefix);
         }
         HeapFree(GetProcessHeap(),0,commonPath);
@@ -1167,12 +1164,8 @@ FileMonikerImpl_RelativePathTo(IMoniker* iface,IMoniker* pmOther, IMoniker** ppm
 
     res=CreateFileMoniker(relPath,ppmkRelPath);
 
-    for(j=0; tabStr1[j]!=NULL;j++)
-        CoTaskMemFree(tabStr1[j]);
-    for(j=0; tabStr2[j]!=NULL;j++)
-        CoTaskMemFree(tabStr2[j]);
-    CoTaskMemFree(tabStr1);
-    CoTaskMemFree(tabStr2);
+    free_stringtable(tabStr1);
+    free_stringtable(tabStr2);
     CoTaskMemFree(str1);
     CoTaskMemFree(str2);
     HeapFree(GetProcessHeap(),0,relPath);
@@ -1410,9 +1403,7 @@ static HRESULT FileMonikerImpl_Construct(FileMonikerImpl* This, LPCOLESTR lpszPa
             strcatW(This->filePathName,bkSlash);
     }
 
-    for(i=0; tabStr[i]!=NULL;i++)
-        CoTaskMemFree(tabStr[i]);
-    CoTaskMemFree(tabStr);
+    free_stringtable(tabStr);
 
     return S_OK;
 }




More information about the wine-cvs mailing list