[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.
This commit is contained in:
Alexei Podtelezhnikov 2022-02-08 14:37:34 +00:00
parent 24db55ecb8
commit 7c6b2f20b0
1 changed files with 8 additions and 13 deletions

View File

@ -63,16 +63,14 @@
{ {
FT_UInt old_max = table->max_hints; FT_UInt old_max = table->max_hints;
FT_UInt new_max = count; 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 );
/* try to grow the table */ if ( !FT_QRENEW_ARRAY( table->hints, old_max, new_max ) )
new_max = FT_PAD_CEIL( new_max, 8 ); table->max_hints = new_max;
if ( !FT_RENEW_ARRAY( table->hints, old_max, new_max ) )
table->max_hints = new_max;
}
return error; return error;
} }
@ -90,17 +88,14 @@
count = table->num_hints; count = table->num_hints;
count++; count++;
if ( count >= table->max_hints ) if ( count > table->max_hints )
{ {
error = ps_hint_table_ensure( table, count, memory ); error = ps_hint_table_ensure( table, count, memory );
if ( error ) if ( error )
goto Exit; goto Exit;
} }
hint = table->hints + count - 1; hint = table->hints + count - 1; /* initialized upstream */
hint->pos = 0;
hint->len = 0;
hint->flags = 0;
table->num_hints = count; table->num_hints = count;