[PATCH 4/6] usp10: Store per-item ABC structure directly

Aric Stewart aric at codeweavers.com
Mon Oct 2 10:31:40 CDT 2017


Signed-off-by: Aric Stewart <aric at codeweavers.com>

On 10/2/17 2:46 AM, Nikolay Sivov wrote:
> Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
> ---
>   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 a1f9c15b9e..f6be836c82 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);
> 



More information about the wine-patches mailing list