From 426b4aa8bac4dd45f0d66d74040f5aa94a21c266 Mon Sep 17 00:00:00 2001 From: David Turner Date: Sat, 8 Jun 2002 13:48:41 +0000 Subject: [PATCH] - 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.. --- src/cache/ftccache.c | 2 +- src/cache/ftccache.i | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/cache/ftccache.c b/src/cache/ftccache.c index ca74f4fc7..00ec2ac12 100644 --- a/src/cache/ftccache.c +++ b/src/cache/ftccache.c @@ -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; diff --git a/src/cache/ftccache.i b/src/cache/ftccache.i index 3e7ce5052..4cd38db86 100644 --- a/src/cache/ftccache.i +++ b/src/cache/ftccache.i @@ -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