[PATCH 5/5] usp10: Use usp10_array_reserve() in usp10_language_add_feature_list().

Aric Stewart aric at codeweavers.com
Thu Mar 22 09:40:58 CDT 2018


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

On 3/22/18 4:52 AM, Henri Verbeet wrote:
> Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
> ---
>   dlls/usp10/opentype.c       | 9 ++-------
>   dlls/usp10/usp10_internal.h | 3 ++-
>   2 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c
> index 88272656038..b627aa2a9cd 100644
> --- a/dlls/usp10/opentype.c
> +++ b/dlls/usp10/opentype.c
> @@ -2818,15 +2818,10 @@ static void usp10_language_add_feature_list(LoadedLanguage *language, char table
>   
>       TRACE("table_type %#x, %u features.\n", table_type, count);
>   
> -    if (!count)
> +    if (!count || !usp10_array_reserve((void **)&language->features, &language->features_size,
> +            language->feature_count + count, sizeof(*language->features)))
>           return;
>   
> -    if (!language->feature_count)
> -        language->features = heap_alloc(count * sizeof(*language->features));
> -    else
> -        language->features = HeapReAlloc(GetProcessHeap(), 0, language->features,
> -                (language->feature_count + count) * sizeof(*language->features));
> -
>       for (i = 0; i < count; ++i)
>       {
>           const OT_FeatureRecord *record;
> diff --git a/dlls/usp10/usp10_internal.h b/dlls/usp10/usp10_internal.h
> index 99d7cd11b11..369a66dd58b 100644
> --- a/dlls/usp10/usp10_internal.h
> +++ b/dlls/usp10/usp10_internal.h
> @@ -163,8 +163,9 @@ typedef struct {
>       OPENTYPE_TAG tag;
>       const void *table[USP10_LANGUAGE_TABLE_COUNT];
>       BOOL features_initialized;
> -    INT feature_count;
>       LoadedFeature *features;
> +    SIZE_T features_size;
> +    SIZE_T feature_count;
>   } LoadedLanguage;
>   
>   enum usp10_script_table
> 



More information about the wine-devel mailing list