Clinton Stimpson : usp10: Implement ScriptStringFree.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 18 05:34:45 CST 2006


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

Author: Clinton Stimpson <cjstimpson at utwire.net>
Date:   Fri Dec 15 19:28:11 2006 -0700

usp10: Implement ScriptStringFree.

---

 dlls/usp10/usp10.c |   35 +++++++++++++++++++++++++++++++++--
 1 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c
index ea5339b..feedc5b 100644
--- a/dlls/usp10/usp10.c
+++ b/dlls/usp10/usp10.c
@@ -595,8 +595,39 @@ HRESULT WINAPI ScriptStringXtoCP(SCRIPT_
  *      ScriptStringFree (USP10.@)
  *
  */
-HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *pssa) {
-    FIXME("(%p): stub\n",pssa);
+HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *pssa)
+{
+    StringAnalysis* analysis;
+    BOOL invalid;
+    int i;
+    TRACE("(%p)\n",pssa);
+
+    if(!pssa)
+        return E_INVALIDARG;
+
+    analysis = *pssa;
+    if(!analysis)
+        return E_INVALIDARG;
+
+    invalid = analysis->invalid;
+
+    for(i=0; i<analysis->numItems; i++)
+    {
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].glyphs);
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].pwLogClust);
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].piAdvance);
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].psva);
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].pGoffset);
+        HeapFree(GetProcessHeap(), 0, analysis->glyphs[i].abc);
+    }
+
+    HeapFree(GetProcessHeap(), 0, analysis->glyphs);
+    HeapFree(GetProcessHeap(), 0, analysis->pItem);
+    HeapFree(GetProcessHeap(), 0, analysis);
+
+    if(invalid)
+        return E_INVALIDARG;
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list