[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