- removing a typo in ftccache.i that prevented it from compiling correctly
- fixed the infamous bug that caused the cache to crash with large fonts. the hash table buckets array wasn't shrinked correctly during cache flushes..
This commit is contained in:
parent
57127f73b9
commit
426b4aa8ba
2
src/cache/ftccache.c
vendored
2
src/cache/ftccache.c
vendored
@ -211,7 +211,7 @@
|
||||
cache->mask >>= 1;
|
||||
p = cache->mask;
|
||||
|
||||
if ( FT_RENEW_ARRAY( cache->buckets, ( mask + 1 ) * 2, mask ) )
|
||||
if ( FT_RENEW_ARRAY( cache->buckets, ( mask + 1 ) * 2, (mask+1) ) )
|
||||
{
|
||||
FT_ERROR(( "ftc_node_hash_unlink: couldn't shunk buckets!\n" ));
|
||||
goto Exit;
|
||||
|
12
src/cache/ftccache.i
vendored
12
src/cache/ftccache.i
vendored
@ -79,14 +79,16 @@
|
||||
hash = query->hash;
|
||||
|
||||
#ifdef FTC_CACHE_USE_LINEAR_HASHING
|
||||
FT_UInt index;
|
||||
{
|
||||
FT_UInt index;
|
||||
|
||||
|
||||
index = hash & cache->mask;
|
||||
if ( index < cache->p )
|
||||
index = hash & ( cache->mask * 2 + 1 );
|
||||
index = hash & cache->mask;
|
||||
if ( index < cache->p )
|
||||
index = hash & ( cache->mask * 2 + 1 );
|
||||
|
||||
bucket = cache->buckets + index;
|
||||
bucket = cache->buckets + index;
|
||||
}
|
||||
#else
|
||||
bucket = cache->buckets + ( hash % cache->size );
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user