Module: wine Branch: master Commit: abf71afdffe48a27801f23e116c7f999f2f4e7b7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=abf71afdffe48a27801f23e116...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Oct 2 10:46:59 2017 +0300
usp10: Store per-item ABC structure directly.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Aric Stewart aric@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/usp10/usp10.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index a1f9c15..f6be836 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -683,7 +683,7 @@ typedef struct { int* piAdvance; SCRIPT_VISATTR* psva; GOFFSET* pGoffset; - ABC* abc; + ABC abc; int iMaxPosX; HFONT fallbackFont; } StringGlyphs; @@ -2029,7 +2029,6 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString, int *piAdvance = heap_alloc_zero(sizeof(int) * numGlyphs); SCRIPT_VISATTR *psva = heap_alloc_zero(sizeof(SCRIPT_VISATTR) * numGlyphs); GOFFSET *pGoffset = heap_alloc_zero(sizeof(GOFFSET) * numGlyphs); - ABC *abc = heap_alloc_zero(sizeof(ABC)); int numGlyphsReturned; HFONT originalFont = 0x0;
@@ -2037,7 +2036,7 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString, const WCHAR* pStr = (const WCHAR*)pString; analysis->glyphs[i].fallbackFont = NULL;
- if (!glyphs || !pwLogClust || !piAdvance || !psva || !pGoffset || !abc) + if (!glyphs || !pwLogClust || !piAdvance || !psva || !pGoffset) { heap_free (BidiLevel); heap_free (glyphs); @@ -2045,7 +2044,6 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString, heap_free (piAdvance); heap_free (psva); heap_free (pGoffset); - heap_free (abc); hr = E_OUTOFMEMORY; goto error; } @@ -2078,7 +2076,7 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString, ScriptShape(hdc, sc, &pStr[analysis->pItem[i].iCharPos], cChar, numGlyphs, &analysis->pItem[i].a, glyphs, pwLogClust, psva, &numGlyphsReturned); hr = ScriptPlace(hdc, sc, glyphs, numGlyphsReturned, psva, &analysis->pItem[i].a, - piAdvance, pGoffset, abc); + piAdvance, pGoffset, &analysis->glyphs[i].abc); if (originalFont) SelectObject(hdc,originalFont);
@@ -2099,7 +2097,6 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString, analysis->glyphs[i].piAdvance = piAdvance; analysis->glyphs[i].psva = psva; analysis->glyphs[i].pGoffset = pGoffset; - analysis->glyphs[i].abc = abc; analysis->glyphs[i].iMaxPosX= -1;
BidiLevel[i] = analysis->pItem[i].a.s.uBidiLevel; @@ -2516,7 +2513,6 @@ HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *pssa) heap_free(analysis->glyphs[i].piAdvance); heap_free(analysis->glyphs[i].psva); heap_free(analysis->glyphs[i].pGoffset); - heap_free(analysis->glyphs[i].abc); if (analysis->glyphs[i].fallbackFont) DeleteObject(analysis->glyphs[i].fallbackFont); ScriptFreeCache((SCRIPT_CACHE *)&analysis->glyphs[i].sc);