| 146 | } |
| 147 | |
| 148 | void Cache_Free(Cache *cache) { |
| 149 | ASSERT(cache != NULL); |
| 150 | |
| 151 | // free cache entries |
| 152 | for(size_t i = 0; i < cache->size; i++) { |
| 153 | CacheEntry *entry = cache->arr + i; |
| 154 | rm_free(entry->key); |
| 155 | cache->free_item(entry->value); |
| 156 | } |
| 157 | |
| 158 | rm_free(cache->arr); |
| 159 | raxFree(cache->lookup); |
| 160 | |
| 161 | int res = pthread_rwlock_destroy(&cache->_cache_rwlock); |
| 162 | UNUSED(res); |
| 163 | ASSERT(res == 0); |
| 164 | |
| 165 | rm_free(cache); |
| 166 | } |
| 167 |