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

Henri Verbeet hverbeet at codeweavers.com
Thu Mar 22 04:52:47 CDT 2018


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
-- 
2.11.0




More information about the wine-devel mailing list