Module: wine Branch: master Commit: 857e330e77a7492b8c6830e897910ac332a62856 URL: http://source.winehq.org/git/wine.git/?a=commit;h=857e330e77a7492b8c6830e897...
Author: Clinton Stimpson cjstimpson@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; }