diff --git a/sandbox/vm/cache.c b/sandbox/vm/cache.c index 1efa96c..a303952 100644 --- a/sandbox/vm/cache.c +++ b/sandbox/vm/cache.c @@ -143,9 +143,13 @@ void *vm_cache_alloc(vm_cache_t *cache, vm_flags_t flags) vm_slab_t *slab = NULL; if (!queue_empty(&cache->c_slabs_partial)) { /* prefer using up partially-full slabs before taking a fresh one */ - slab = QUEUE_CONTAINER(vm_slab_t, s_list, queue_pop_front(&cache->c_slabs_partial)); + queue_entry_t *slab_entry = queue_pop_front(&cache->c_slabs_partial); + assert(slab_entry); + slab = QUEUE_CONTAINER(vm_slab_t, s_list, slab_entry); } else if (!queue_empty(&cache->c_slabs_empty)) { - slab = QUEUE_CONTAINER(vm_slab_t, s_list, queue_pop_front(&cache->c_slabs_empty)); + queue_entry_t *slab_entry = queue_pop_front(&cache->c_slabs_empty); + assert(slab_entry); + slab = QUEUE_CONTAINER(vm_slab_t, s_list, slab_entry); } else { /* we've run out of slabs. create a new one */ slab = alloc_slab(cache, flags);