diff options
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_cache.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libass/ass_cache.c b/libass/ass_cache.c index 91801a0a..dd02e750 100644 --- a/libass/ass_cache.c +++ b/libass/ass_cache.c @@ -243,13 +243,13 @@ void *ass_cache_put(Cache *cache, void *key, void *value) { unsigned bucket = cache->hash_func(key, cache->key_size) % cache->buckets; CacheItem **item = &cache->map[bucket]; - while (*item) - item = &(*item)->next; + CacheItem *next = *item; (*item) = calloc(1, sizeof(CacheItem)); (*item)->key = malloc(cache->key_size); (*item)->value = malloc(cache->value_size); memcpy((*item)->key, key, cache->key_size); memcpy((*item)->value, value, cache->value_size); + (*item)->next = next; cache->items++; if (cache->size_func) |