diff --git a/src/utils_cache.c b/src/utils_cache.c
index d0e77ef351b840a79fcd91123264c3b43670dbb2..b2f2c36b7223b87b53266ed121c3bdc9bc1a27ed 100644 (file)
--- a/src/utils_cache.c
+++ b/src/utils_cache.c
ce = cache_alloc (ds->ds_num);
if (ce == NULL)
{
+ sfree (key_copy);
ERROR ("uc_insert: cache_alloc (%i) failed.", ds->ds_num);
return (-1);
}
{
ERROR ("uc_purge: realloc failed.");
c_avl_iterator_destroy (iter);
+ pthread_mutex_unlock (&cache_lock);
return (-1);
}
ERROR ("uc_check_timeout: c_avl_remove (%s) failed.", keys[i]);
}
sfree (keys[i]);
+ sfree (key);
cache_free (ce);
}
else if (status == 1) /* persist */
/* This is important - the caller has no other way of knowing how many
* values are returned. */
- if (ret_num != ds->ds_num)
+ if (ret_num != (size_t) ds->ds_num)
{
ERROR ("utils_cache: uc_get_rate: ds[%s] has %i values, "
"but uc_get_rate_by_name returned %zu.",