oledlg: Cast-qual warnings fix

Andrew Talbot Andrew.Talbot at talbotville.com
Wed Nov 8 15:56:54 CST 2006


Changelog:
    oledlg: Cast-qual warnings fix.

diff -urN a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c
--- a/dlls/oledlg/pastespl.c	2006-10-25 17:34:28.000000000 +0100
+++ b/dlls/oledlg/pastespl.c	2006-11-08 20:18:00.000000000 +0000
@@ -636,6 +636,10 @@
 UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA psA)
 {
     OLEUIPASTESPECIALW ps;
+    WCHAR *caption;
+    WCHAR *template;
+    WCHAR **format_name;
+    WCHAR **result_text;
     UINT ret;
     TRACE("(%p)\n", psA);
 
@@ -652,11 +656,13 @@
 
         ps.arrPasteEntries = HeapAlloc(GetProcessHeap(), 0, size);
         memcpy(ps.arrPasteEntries, psA->arrPasteEntries, size);
+        format_name = HeapAlloc(GetProcessHeap(), 0, psA->cPasteEntries * sizeof(WCHAR *));
+        result_text = HeapAlloc(GetProcessHeap(), 0, psA->cPasteEntries * sizeof(WCHAR *));
         for(i = 0; i < psA->cPasteEntries; i++)
         {
-            ps.arrPasteEntries[i].lpstrFormatName =
+            ps.arrPasteEntries[i].lpstrFormatName = format_name[i] =
                 strdupAtoW(psA->arrPasteEntries[i].lpstrFormatName);
-            ps.arrPasteEntries[i].lpstrResultText =
+            ps.arrPasteEntries[i].lpstrResultText = result_text[i] =
                 strdupAtoW(psA->arrPasteEntries[i].lpstrResultText);
         }
     }
@@ -666,16 +672,20 @@
     if(psA->cPasteEntries > 0)
     {
         UINT i;
-        for(i = 0; i < psA->cPasteEntries; i++)
+
+        for(i = psA->cPasteEntries; i != 0;)
         {
-            HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.arrPasteEntries[i].lpstrFormatName);
-            HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.arrPasteEntries[i].lpstrResultText);
+            --i;
+            HeapFree(GetProcessHeap(), 0, result_text[i]);
+            HeapFree(GetProcessHeap(), 0, format_name[i]);
         }
+        HeapFree(GetProcessHeap(), 0, result_text);
+        HeapFree(GetProcessHeap(), 0, format_name);
         HeapFree(GetProcessHeap(), 0, ps.arrPasteEntries);
     }
     if(!IS_INTRESOURCE(ps.lpszTemplate))
-        HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.lpszTemplate);
-    HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.lpszCaption);
+        HeapFree(GetProcessHeap(), 0, template);
+    HeapFree(GetProcessHeap(), 0, caption);
 
     /* Copy back the output fields */
     psA->dwFlags = ps.dwFlags;



More information about the wine-patches mailing list