--- libaitio/src/Attic/vars.c 2012/03/29 12:23:00 1.5.2.2 +++ libaitio/src/Attic/vars.c 2012/03/29 13:16:24 1.5.2.3 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: vars.c,v 1.5.2.2 2012/03/29 12:23:00 misho Exp $ +* $Id: vars.c,v 1.5.2.3 2012/03/29 13:16:24 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -616,7 +616,7 @@ ait_val_t * io_findKeyVars(array_t * __restrict vars, u_short key) { array_t *tmp; - ait_val_t **v = NULL; + ait_val_t **vv, *v = NULL; register int i; const u_char *p; @@ -630,17 +630,17 @@ io_findKeyVars(array_t * __restrict vars, u_short key) /* binary search */ for (p = (const u_char*) tmp->arr_data, i = io_arraySize(tmp); i; i >>= 1) { - v = (ait_val_t**) (p + (i >> 1) * sizeof(void*)); - if (!(key - AIT_KEY(*v))) { /* found! */ - io_arrayDestroy(&tmp); - return *v; + vv = (ait_val_t**) (p + (i >> 1) * sizeof(void*)); + if (!(key - AIT_KEY(*vv))) { /* found! */ + v = *vv; + break; } - if ((key - AIT_KEY(*v)) > 0) { /* move right key > current */ - p = (const u_char*) v + sizeof(void*); + if ((key - AIT_KEY(*vv)) > 0) { /* move right key > current */ + p = (const u_char*) vv + sizeof(void*); i--; } /* else move left */ } io_arrayDestroy(&tmp); - return NULL; + return v; }