[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:
parent
24db55ecb8
commit
7c6b2f20b0
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue