summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2022-02-08 14:37:34 +0000
committerAlexei Podtelezhnikov <apodtele@gmail.com>2022-02-08 14:37:34 +0000
commit7c6b2f20b08a33b78b9e95cd77fda68aeedca02d (patch)
tree068b041012f8ae9377eda1005e0c48f736aaebdc
parent24db55ecb81ca726b9c7e12e37d54a986c84f014 (diff)
downloadfreetype2-7c6b2f20b08a33b78b9e95cd77fda68aeedca02d.tar.gz
[pshinter] Revise the hint table handling.
* src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size check; avoid array zeroing because it is fully initialized when used. (ps_hint_table_alloc): Fix off-by-one comparison and remove another zeroing of the array elements.
-rw-r--r--src/pshinter/pshrec.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index a007724f5..eae6e401b 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -63,16 +63,14 @@
{
FT_UInt old_max = table->max_hints;
FT_UInt new_max = count;
- FT_Error error = FT_Err_Ok;
+ FT_Error error;
- if ( new_max > old_max )
- {
- /* try to grow the table */
- new_max = FT_PAD_CEIL( new_max, 8 );
- if ( !FT_RENEW_ARRAY( table->hints, old_max, new_max ) )
- table->max_hints = new_max;
- }
+ /* try to grow the table */
+ new_max = FT_PAD_CEIL( new_max, 8 );
+ if ( !FT_QRENEW_ARRAY( table->hints, old_max, new_max ) )
+ table->max_hints = new_max;
+
return error;
}
@@ -90,17 +88,14 @@
count = table->num_hints;
count++;
- if ( count >= table->max_hints )
+ if ( count > table->max_hints )
{
error = ps_hint_table_ensure( table, count, memory );
if ( error )
goto Exit;
}
- hint = table->hints + count - 1;
- hint->pos = 0;
- hint->len = 0;
- hint->flags = 0;
+ hint = table->hints + count - 1; /* initialized upstream */
table->num_hints = count;