diff --git a/lib/cache_mngt.c b/lib/cache_mngt.c index fa1ac22..540c5c1 100644 --- a/lib/cache_mngt.c +++ b/lib/cache_mngt.c @@ -217,8 +217,10 @@ void nl_cache_mngt_provide(struct nl_cache *cache) ops = cache_ops_lookup_for_obj(cache->c_ops->co_obj_ops); if (!ops) BUG(); - else + else { + nl_cache_get(cache); ops->co_major_cache = cache; + } } /** @@ -236,8 +238,10 @@ void nl_cache_mngt_unprovide(struct nl_cache *cache) ops = cache_ops_lookup_for_obj(cache->c_ops->co_obj_ops); if (!ops) BUG(); - else if (ops->co_major_cache == cache) + else if (ops->co_major_cache == cache) { + nl_cache_free(ops->co_major_cache); ops->co_major_cache = NULL; + } } struct nl_cache *__nl_cache_mngt_require(const char *name)