From de47eb59bb829423b1d0f47ba13099073999b3cb Mon Sep 17 00:00:00 2001 From: Nicolas Planel Date: Wed, 29 Oct 2003 16:07:11 +0000 Subject: Corporate Server 2.1.1 release --- mdk-stage1/dietlibc/lib/bsearch.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'mdk-stage1/dietlibc/lib/bsearch.c') diff --git a/mdk-stage1/dietlibc/lib/bsearch.c b/mdk-stage1/dietlibc/lib/bsearch.c index d2f5c74b2..14605f1f6 100644 --- a/mdk-stage1/dietlibc/lib/bsearch.c +++ b/mdk-stage1/dietlibc/lib/bsearch.c @@ -1,20 +1,20 @@ +#include #include void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) { - const char *v, *r; - int res; - r=base+(nmemb-1)*size; - do { - register int num=nmemb/2; - v=base+num*size; - if ((res=compar(key,v))<0) { - r=v-size; - nmemb=num; - } else { - if (res==0) return (void*)v; - base=v+size; - nmemb-=num; - } - } while ((char*)base<=r); + size_t m; + while (nmemb) { + int tmp; + void *p; + m=nmemb/2; + p=(void *) (((const char *) base) + (m * size)); + if ((tmp=(*compar)(key,p))<0) { + nmemb=m; + } else if (tmp>0) { + base=p+size; + nmemb-=m+1; + } else + return p; + } return 0; } -- cgit v1.2.1