[PATCH 3/5] usp10: Double the languages array size when growing it in GPOS_expand_language_cache().

Aric Stewart aric at codeweavers.com
Tue Mar 28 07:17:33 CDT 2017


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

On 3/27/17 3:57 PM, Henri Verbeet wrote:
> Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
> ---
>  dlls/usp10/opentype.c       | 13 +++++++++----
>  dlls/usp10/usp10_internal.h |  3 ++-
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c
> index aa3d654..f089a0f 100644
> --- a/dlls/usp10/opentype.c
> +++ b/dlls/usp10/opentype.c
> @@ -2705,10 +2705,15 @@ static void GPOS_expand_language_cache(LoadedScript *script)
>  
>              if (!(language = usp10_script_get_language(script, tag)))
>              {
> -                script->language_count++;
> -                script->languages = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
> -                        script->languages, script->language_count * sizeof(*script->languages));
> -                language = &script->languages[script->language_count - 1];
> +                if (!usp10_array_reserve((void **)&script->languages, &script->languages_size,
> +                        script->language_count + 1, sizeof(*script->languages)))
> +                {
> +                    ERR("Failed grow languages array.\n");
> +                    return;
> +                }
> +
> +                language = &script->languages[script->language_count];
> +                ++script->language_count;
>                  language->tag = tag;
>              }
>              language->gpos_table = (const BYTE *)table + offset;
> diff --git a/dlls/usp10/usp10_internal.h b/dlls/usp10/usp10_internal.h
> index 22e4aad..0952919 100644
> --- a/dlls/usp10/usp10_internal.h
> +++ b/dlls/usp10/usp10_internal.h
> @@ -164,8 +164,9 @@ typedef struct {
>      const void *gpos_table;
>      LoadedLanguage default_language;
>      BOOL languages_initialized;
> -    INT language_count;
>      LoadedLanguage *languages;
> +    size_t languages_size;
> +    size_t language_count;
>  } LoadedScript;
>  
>  typedef struct {
> 



More information about the wine-patches mailing list