diff options
author | Grigori Goronzy <greg@blackbox> | 2011-06-27 19:42:56 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@blackbox> | 2011-06-27 19:51:32 +0200 |
commit | 30497b80dd25447df4c3a820d0f7f849dc725114 (patch) | |
tree | 1801af3258908769af4bc40a1f75824fc79be47c /libass/ass_cache.c | |
parent | d14f08365d9ecd16e8c762d852b6a22d7cc2307d (diff) | |
download | libass-30497b80dd25447df4c3a820d0f7f849dc725114.tar.bz2 libass-30497b80dd25447df4c3a820d0f7f849dc725114.tar.xz |
cache: fix size tracking and emptying
Diffstat (limited to 'libass/ass_cache.c')
-rw-r--r-- | libass/ass_cache.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libass/ass_cache.c b/libass/ass_cache.c index 15f7376..8d42e61 100644 --- a/libass/ass_cache.c +++ b/libass/ass_cache.c @@ -229,6 +229,8 @@ void *ass_cache_put(Cache *cache, void *key, void *value) cache->items++; if (cache->size_func) cache->cache_size += cache->size_func(value, cache->value_size); + else + cache->cache_size++; return (*item)->value; } @@ -248,12 +250,12 @@ void *ass_cache_get(Cache *cache, void *key) return NULL; } -size_t ass_cache_empty(Cache *cache, size_t max_size) +int ass_cache_empty(Cache *cache, size_t max_size) { int i; if (cache->cache_size < max_size) - return cache->cache_size; + return 0; for (i = 0; i < cache->buckets; i++) { CacheItem *item = cache->map[i]; @@ -268,7 +270,7 @@ size_t ass_cache_empty(Cache *cache, size_t max_size) cache->items = cache->hits = cache->misses = cache->cache_size = 0; - return 0; + return 1; } void ass_cache_stats(Cache *cache, size_t *size, unsigned *hits, |