From: Pekka Riikonen Date: Mon, 9 Jul 2007 17:28:46 +0000 (+0000) Subject: Optimized locking. X-Git-Tag: 1.2.beta1~200 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=b0645eb80448c57102b33b8de85a93384697a1bf;p=crypto.git Optimized locking. --- diff --git a/lib/silcutil/silcstack.c b/lib/silcutil/silcstack.c index d22fba3f..03b18b5c 100644 --- a/lib/silcutil/silcstack.c +++ b/lib/silcutil/silcstack.c @@ -95,25 +95,22 @@ static SilcStackDataEntry silc_stack_ref_stack(SilcStack stack, return e; } + silc_mutex_unlock(stack->lock); + /* If we are child, get block from parent */ - if (stack->parent) { - silc_mutex_unlock(stack->lock); + if (stack->parent) return silc_stack_ref_stack(stack->parent, size, ret_si, ret_bsize); - } SILC_ST_DEBUG(("Allocate new stack blocks")); /* Allocate new stack blocks */ e = silc_calloc(1, sizeof(*e)); - if (!e) { - silc_mutex_unlock(stack->lock); + if (!e) return NULL; - } e->data[si] = silc_malloc(bsize + SILC_STACK_ALIGN(sizeof(*e->data[0]), stack->alignment)); if (!e->data[si]) { silc_free(e); - silc_mutex_unlock(stack->lock); return NULL; } e->data[si]->bytes_left = bsize; @@ -122,7 +119,6 @@ static SilcStackDataEntry silc_stack_ref_stack(SilcStack stack, SILC_ST_DEBUG(("Got stack blocks %p from stack %p", e->data, stack)); - silc_mutex_unlock(stack->lock); return e; }