[PATCH 3/5] usp10: Double the languages array size when growing it in GPOS_expand_language_cache().
Henri Verbeet
hverbeet at codeweavers.com
Mon Mar 27 15:57:02 CDT 2017
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 {
--
2.1.4
More information about the wine-patches
mailing list