[PATCH 4/5] usp10: Use heap_alloc() instead of HeapAlloc().
Aric Stewart
aric at codeweavers.com
Fri Mar 10 09:23:49 CST 2017
Feels a little like there are 2 unrelated changes here the heap_alloc work and then using the loaded_feature temporary variable to clean up the code. I am fine with both changes so I will sign off but i wonder if it makes the commit message a bit less clear.
Signed-off-by: Aric Stewart <aric at codeweavers.com>
On 3/9/17 3:37 AM, Henri Verbeet wrote:
> Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
> ---
> dlls/usp10/bidi.c | 18 ++++++-------
> dlls/usp10/breaking.c | 4 +--
> dlls/usp10/indic.c | 2 +-
> dlls/usp10/opentype.c | 70 +++++++++++++++++++++++++++++++--------------------
> dlls/usp10/shape.c | 46 ++++++++++++++++-----------------
> 5 files changed, 78 insertions(+), 62 deletions(-)
>
> diff --git a/dlls/usp10/bidi.c b/dlls/usp10/bidi.c
> index 5adce9d..32f3f40 100644
> --- a/dlls/usp10/bidi.c
> +++ b/dlls/usp10/bidi.c
> @@ -695,8 +695,8 @@ static BracketPair *computeBracketPairs(IsolatedRun *iso_run)
> int pair_count = 0;
> int i;
>
> - open_stack = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * iso_run->length);
> - stack_index = HeapAlloc(GetProcessHeap(), 0, sizeof(int) * iso_run->length);
> + open_stack = heap_alloc(iso_run->length * sizeof(*open_stack));
> + stack_index = heap_alloc(iso_run->length * sizeof(*stack_index));
>
> for (i = 0; i < iso_run->length; i++)
> {
> @@ -705,7 +705,7 @@ static BracketPair *computeBracketPairs(IsolatedRun *iso_run)
> {
> if (!out)
> {
> - out = HeapAlloc(GetProcessHeap(),0,sizeof(BracketPair));
> + out = heap_alloc(sizeof(*out));
> out[0].start = -1;
> }
>
> @@ -995,8 +995,8 @@ static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel
> Run *runs;
> IsolatedRun *current_isolated;
>
> - runs = HeapAlloc(GetProcessHeap(), 0, uCount * sizeof(Run));
> - if (!runs) return;
> + if (!(runs = heap_alloc(uCount * sizeof(*runs))))
> + return;
>
> list_init(set);
>
> @@ -1023,8 +1023,9 @@ static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel
> {
> int type_fence, real_end;
> int j;
> - current_isolated = HeapAlloc(GetProcessHeap(), 0, sizeof(IsolatedRun) + sizeof(RunChar)*uCount);
> - if (!current_isolated) break;
> +
> + if (!(current_isolated = heap_alloc(FIELD_OFFSET(IsolatedRun, item[uCount]))))
> + break;
>
> run_start = runs[k].start;
> current_isolated->e = runs[k].e;
> @@ -1141,8 +1142,7 @@ BOOL BIDI_DetermineLevels(
>
> TRACE("%s, %d\n", debugstr_wn(lpString, uCount), uCount);
>
> - chartype = HeapAlloc(GetProcessHeap(), 0, uCount * sizeof(WORD));
> - if (!chartype)
> + if (!(chartype = heap_alloc(uCount * sizeof(*chartype))))
> {
> WARN("Out of memory\n");
> return FALSE;
> diff --git a/dlls/usp10/breaking.c b/dlls/usp10/breaking.c
> index b1220c1..c64a218 100644
> --- a/dlls/usp10/breaking.c
> +++ b/dlls/usp10/breaking.c
> @@ -81,8 +81,8 @@ void BREAK_line(const WCHAR *chars, int count, const SCRIPT_ANALYSIS *sa, SCRIPT
>
> TRACE("In %s\n",debugstr_wn(chars,count));
>
> - break_class = HeapAlloc(GetProcessHeap(),0, count * sizeof(short));
> - break_before = HeapAlloc(GetProcessHeap(),0, count * sizeof(short));
> + break_class = heap_alloc(count * sizeof(*break_class));
> + break_before = heap_alloc(count * sizeof(*break_before));
>
> for (i = 0; i < count; i++)
> {
> diff --git a/dlls/usp10/indic.c b/dlls/usp10/indic.c
> index 62834d1..71c2285 100644
> --- a/dlls/usp10/indic.c
> +++ b/dlls/usp10/indic.c
> @@ -342,7 +342,7 @@ void Indic_ParseSyllables( HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCache* psc, LPCW
> if (*syllable_count)
> *syllables = HeapReAlloc(GetProcessHeap(),0,*syllables, sizeof(IndicSyllable)*(*syllable_count+1));
> else
> - *syllables = HeapAlloc(GetProcessHeap(),0,sizeof(IndicSyllable));
> + *syllables = heap_alloc(sizeof(**syllables));
> (*syllables)[*syllable_count].start = index;
> (*syllables)[*syllable_count].base = center;
> (*syllables)[*syllable_count].ralf = -1;
> diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c
> index 6d6a25e..e531f3a 100644
> --- a/dlls/usp10/opentype.c
> +++ b/dlls/usp10/opentype.c
> @@ -634,7 +634,7 @@ static VOID *load_CMAP_format12_table(HDC hdc, ScriptCache *psc)
> length = GetFontData(hdc, CMAP_TAG , 0, NULL, 0);
> if (length != GDI_ERROR)
> {
> - psc->CMAP_Table = HeapAlloc(GetProcessHeap(),0,length);
> + psc->CMAP_Table = heap_alloc(length);
> GetFontData(hdc, CMAP_TAG , 0, psc->CMAP_Table, length);
> TRACE("Loaded cmap table of %i bytes\n",length);
> }
> @@ -2763,24 +2763,29 @@ static void GSUB_initialize_feature_cache(LPCVOID table, LoadedLanguage *languag
>
> if (language->feature_count)
> {
> - language->features = HeapAlloc(GetProcessHeap(),0,sizeof(LoadedFeature)*language->feature_count);
> + language->features = heap_alloc(language->feature_count * sizeof(*language->features));
>
> feature_list = (const OT_FeatureList*)((const BYTE*)header + GET_BE_WORD(header->FeatureList));
>
> for (i = 0; i < language->feature_count; i++)
> {
> + LoadedFeature *loaded_feature = &language->features[i];
> const OT_Feature *feature;
> int j;
> int index = GET_BE_WORD(lang->FeatureIndex[i]);
>
> - language->features[i].tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0], feature_list->FeatureRecord[index].FeatureTag[1], feature_list->FeatureRecord[index].FeatureTag[2], feature_list->FeatureRecord[index].FeatureTag[3]);
> - language->features[i].feature = ((const BYTE*)feature_list + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> - feature = (const OT_Feature*)language->features[i].feature;
> - language->features[i].lookup_count = GET_BE_WORD(feature->LookupCount);
> - language->features[i].lookups = HeapAlloc(GetProcessHeap(),0,sizeof(WORD) * language->features[i].lookup_count);
> - for (j = 0; j < language->features[i].lookup_count; j++)
> - language->features[i].lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> - language->features[i].tableType = FEATURE_GSUB_TABLE;
> + loaded_feature->tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0],
> + feature_list->FeatureRecord[index].FeatureTag[1],
> + feature_list->FeatureRecord[index].FeatureTag[2],
> + feature_list->FeatureRecord[index].FeatureTag[3]);
> + loaded_feature->feature = ((const BYTE *)feature_list
> + + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> + feature = loaded_feature->feature;
> + loaded_feature->lookup_count = GET_BE_WORD(feature->LookupCount);
> + loaded_feature->lookups = heap_alloc(loaded_feature->lookup_count * sizeof(*loaded_feature->lookups));
> + for (j = 0; j < loaded_feature->lookup_count; ++j)
> + loaded_feature->lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> + loaded_feature->tableType = FEATURE_GSUB_TABLE;
> }
> }
> }
> @@ -2810,22 +2815,27 @@ static void GPOS_expand_feature_cache(LPCVOID table, LoadedLanguage *language)
>
> if (language->feature_count)
> {
> - language->features = HeapAlloc(GetProcessHeap(),0,sizeof(LoadedFeature)*language->feature_count);
> + language->features = heap_alloc(language->feature_count * sizeof(*language->features));
>
> for (i = 0; i < language->feature_count; i++)
> {
> + LoadedFeature *loaded_feature = &language->features[i];
> const OT_Feature *feature;
> int j;
> int index = GET_BE_WORD(lang->FeatureIndex[i]);
>
> - language->features[i].tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0], feature_list->FeatureRecord[index].FeatureTag[1], feature_list->FeatureRecord[index].FeatureTag[2], feature_list->FeatureRecord[index].FeatureTag[3]);
> - language->features[i].feature = ((const BYTE*)feature_list + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> - feature = (const OT_Feature*)language->features[i].feature;
> - language->features[i].lookup_count = GET_BE_WORD(feature->LookupCount);
> - language->features[i].lookups = HeapAlloc(GetProcessHeap(),0,sizeof(WORD) * language->features[i].lookup_count);
> - for (j = 0; j < language->features[i].lookup_count; j++)
> - language->features[i].lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> - language->features[i].tableType = FEATURE_GPOS_TABLE;
> + loaded_feature->tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0],
> + feature_list->FeatureRecord[index].FeatureTag[1],
> + feature_list->FeatureRecord[index].FeatureTag[2],
> + feature_list->FeatureRecord[index].FeatureTag[3]);
> + loaded_feature->feature = ((const BYTE *)feature_list
> + + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> + feature = loaded_feature->feature;
> + loaded_feature->lookup_count = GET_BE_WORD(feature->LookupCount);
> + loaded_feature->lookups = heap_alloc(loaded_feature->lookup_count * sizeof(*loaded_feature->lookups));
> + for (j = 0; j < loaded_feature->lookup_count; ++j)
> + loaded_feature->lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> + loaded_feature->tableType = FEATURE_GPOS_TABLE;
> }
> }
> }
> @@ -2835,19 +2845,25 @@ static void GPOS_expand_feature_cache(LPCVOID table, LoadedLanguage *language)
>
> for (i = 0; i < count; i++)
> {
> + LoadedFeature *loaded_feature;
> const OT_Feature *feature;
> int j;
> int index = GET_BE_WORD(lang->FeatureIndex[i]);
> int idx = language->feature_count + i;
>
> - language->features[idx].tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0], feature_list->FeatureRecord[index].FeatureTag[1], feature_list->FeatureRecord[index].FeatureTag[2], feature_list->FeatureRecord[index].FeatureTag[3]);
> - language->features[idx].feature = ((const BYTE*)feature_list + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> - feature = (const OT_Feature*)language->features[idx].feature;
> - language->features[idx].lookup_count = GET_BE_WORD(feature->LookupCount);
> - language->features[idx].lookups = HeapAlloc(GetProcessHeap(),0,sizeof(WORD) * language->features[idx].lookup_count);
> - for (j = 0; j < language->features[idx].lookup_count; j++)
> - language->features[idx].lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> - language->features[idx].tableType = FEATURE_GPOS_TABLE;
> + loaded_feature = &language->features[idx];
> + loaded_feature->tag = MS_MAKE_TAG(feature_list->FeatureRecord[index].FeatureTag[0],
> + feature_list->FeatureRecord[index].FeatureTag[1],
> + feature_list->FeatureRecord[index].FeatureTag[2],
> + feature_list->FeatureRecord[index].FeatureTag[3]);
> + loaded_feature->feature = ((const BYTE *)feature_list
> + + GET_BE_WORD(feature_list->FeatureRecord[index].Feature));
> + feature = loaded_feature->feature;
> + loaded_feature->lookup_count = GET_BE_WORD(feature->LookupCount);
> + loaded_feature->lookups = heap_alloc(loaded_feature->lookup_count * sizeof(*loaded_feature->lookups));
> + for (j = 0; j < loaded_feature->lookup_count; ++j)
> + loaded_feature->lookups[j] = GET_BE_WORD(feature->LookupListIndex[j]);
> + loaded_feature->tableType = FEATURE_GPOS_TABLE;
> }
> language->feature_count += count;
> }
> diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c
> index 9d07e5b..fff3304 100644
> --- a/dlls/usp10/shape.c
> +++ b/dlls/usp10/shape.c
> @@ -660,7 +660,7 @@ static VOID *load_gsub_table(HDC hdc)
> int length = GetFontData(hdc, MS_MAKE_TAG('G', 'S', 'U', 'B'), 0, NULL, 0);
> if (length != GDI_ERROR)
> {
> - GSUB_Table = HeapAlloc(GetProcessHeap(),0,length);
> + GSUB_Table = heap_alloc(length);
> GetFontData(hdc, MS_MAKE_TAG('G', 'S', 'U', 'B'), 0, GSUB_Table, length);
> TRACE("Loaded GSUB table of %i bytes\n",length);
> }
> @@ -673,7 +673,7 @@ static VOID *load_gpos_table(HDC hdc)
> int length = GetFontData(hdc, MS_MAKE_TAG('G', 'P', 'O', 'S'), 0, NULL, 0);
> if (length != GDI_ERROR)
> {
> - GPOS_Table = HeapAlloc(GetProcessHeap(),0,length);
> + GPOS_Table = heap_alloc(length);
> GetFontData(hdc, MS_MAKE_TAG('G', 'P', 'O', 'S'), 0, GPOS_Table, length);
> TRACE("Loaded GPOS table of %i bytes\n",length);
> }
> @@ -686,7 +686,7 @@ static VOID *load_gdef_table(HDC hdc)
> int length = GetFontData(hdc, MS_MAKE_TAG('G', 'D', 'E', 'F'), 0, NULL, 0);
> if (length != GDI_ERROR)
> {
> - GDEF_Table = HeapAlloc(GetProcessHeap(),0,length);
> + GDEF_Table = heap_alloc(length);
> GetFontData(hdc, MS_MAKE_TAG('G', 'D', 'E', 'F'), 0, GDEF_Table, length);
> TRACE("Loaded GDEF table of %i bytes\n",length);
> }
> @@ -709,7 +709,7 @@ INT SHAPE_does_GSUB_feature_apply_to_chars(HDC hdc, SCRIPT_ANALYSIS *psa, Script
> INT glyph_count = count;
> INT rc;
>
> - glyphs = HeapAlloc(GetProcessHeap(),0,sizeof(WORD)*(count*2));
> + glyphs = heap_alloc(2 * count * sizeof(*glyphs));
> GetGlyphIndicesW(hdc, chars, count, glyphs, 0);
> rc = apply_GSUB_feature_to_glyph(hdc, psa, psc, glyphs, 0, write_dir, &glyph_count, feature);
> if (rc > GSUB_E_NOGLYPH)
> @@ -898,7 +898,7 @@ static void mark_invalid_combinations(HDC hdc, const WCHAR* pwcChars, INT cChars
> WCHAR invalid = 0x25cc;
> WORD invalid_glyph;
>
> - context_type = HeapAlloc(GetProcessHeap(),0,cChars);
> + context_type = heap_alloc(cChars);
>
> /* Mark invalid combinations */
> for (i = 0; i < cChars; i++)
> @@ -1068,8 +1068,8 @@ static void ContextualShape_Arabic(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
>
> load_ot_tables(hdc, psc);
>
> - context_type = HeapAlloc(GetProcessHeap(),0,cChars);
> - context_shape = HeapAlloc(GetProcessHeap(),0,sizeof(INT) * cChars);
> + context_type = heap_alloc(cChars);
> + context_shape = heap_alloc(cChars * sizeof(*context_shape));
>
> for (i = 0; i < cChars; i++)
> context_type[i] = get_table_entry( wine_shaping_table, pwcChars[i] );
> @@ -1325,8 +1325,8 @@ static void ContextualShape_Syriac(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
> if (!psc->GSUB_Table)
> return;
>
> - context_type = HeapAlloc(GetProcessHeap(),0,cChars);
> - context_shape = HeapAlloc(GetProcessHeap(),0,sizeof(INT) * cChars);
> + context_type = heap_alloc(cChars);
> + context_shape = heap_alloc(cChars * sizeof(*context_shape));
>
> for (i = 0; i < cChars; i++)
> context_type[i] = get_table_entry( wine_shaping_table, pwcChars[i] );
> @@ -1487,7 +1487,7 @@ static void ContextualShape_Phags_pa(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
> if (!psc->GSUB_Table)
> return;
>
> - context_shape = HeapAlloc(GetProcessHeap(),0,sizeof(INT) * cChars);
> + context_shape = heap_alloc(cChars * sizeof(*context_shape));
>
> for (i = 0; i < cChars; i++)
> {
> @@ -2275,7 +2275,7 @@ static void ContextualShape_Sinhala(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR) * (cChars * 3));
> + input = heap_alloc(3 * cChars * sizeof(*input));
>
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> @@ -2342,7 +2342,7 @@ static void ContextualShape_Devanagari(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, cChars * sizeof(WCHAR));
> + input = heap_alloc(cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Compose Consonant and Nukta */
> @@ -2398,7 +2398,7 @@ static void ContextualShape_Bengali(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars * 2) * sizeof(WCHAR));
> + input = heap_alloc(2 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels and Compose Consonants */
> @@ -2462,7 +2462,7 @@ static void ContextualShape_Gurmukhi(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, cChars * sizeof(WCHAR));
> + input = heap_alloc(cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Compose Consonants */
> @@ -2506,7 +2506,7 @@ static void ContextualShape_Gujarati(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, cChars * sizeof(WCHAR));
> + input = heap_alloc(cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Reorder within Syllables */
> @@ -2557,7 +2557,7 @@ static void ContextualShape_Oriya(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *ps
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars*2) * sizeof(WCHAR));
> + input = heap_alloc(2 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels and Compose Consonants */
> @@ -2607,7 +2607,7 @@ static void ContextualShape_Tamil(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *ps
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars*2) * sizeof(WCHAR));
> + input = heap_alloc(2 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels and Compose Consonants */
> @@ -2657,7 +2657,7 @@ static void ContextualShape_Telugu(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars*2) * sizeof(WCHAR));
> + input = heap_alloc(2 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels */
> @@ -2709,7 +2709,7 @@ static void ContextualShape_Kannada(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars*3) * sizeof(WCHAR));
> + input = heap_alloc(3 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels */
> @@ -2754,7 +2754,7 @@ static void ContextualShape_Malayalam(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, (cChars*2) * sizeof(WCHAR));
> + input = heap_alloc(2 * cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Decompose Vowels */
> @@ -2792,7 +2792,7 @@ static void ContextualShape_Khmer(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *ps
> return;
> }
>
> - input = HeapAlloc(GetProcessHeap(), 0, cChars * sizeof(WCHAR));
> + input = heap_alloc(cChars * sizeof(*input));
> memcpy(input, pwcChars, cChars * sizeof(WCHAR));
>
> /* Step 1: Reorder within Syllables */
> @@ -2835,7 +2835,7 @@ static void ContextualShape_Mongolian(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
> if (!psc->GSUB_Table)
> return;
>
> - context_shape = HeapAlloc(GetProcessHeap(),0,sizeof(INT) * cChars);
> + context_shape = heap_alloc(cChars * sizeof(*context_shape));
>
> for (i = 0; i < cChars; i++)
> {
> @@ -2949,7 +2949,7 @@ static void ShapeCharGlyphProp_Arabic( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
> INT dirR, dirL;
> BYTE *spaces;
>
> - spaces = HeapAlloc(GetProcessHeap(),0,cGlyphs);
> + spaces = heap_alloc(cGlyphs);
> memset(spaces,0,cGlyphs);
>
> if (psa->fLogicalOrder && psa->fRTL)
>
More information about the wine-patches
mailing list