diff --git a/stdlib/bsearch.c b/stdlib/bsearch.c index ebfcd51..ce878ab 100644 --- a/stdlib/bsearch.c +++ b/stdlib/bsearch.c @@ -13,22 +13,22 @@ void * bsearch(const void * key, const void * base, size_t nel, size_t width, int (*compar)(const void *, const void*)) { - void * left; - void * right; - void * mid; + long int left; + long int right; + long int mid; if(nel == 0 || base == NULL) { return NULL; } - left = base; - right = base + (nel * width); + left = (long int) base; + right = (long int) (base + (nel * width)); while(left <= right) { mid = (left + right) / 2; - int t = compar(key, mid); + int t = compar(key, (void *) mid); if(t == 0) { - return mid; + return (void *) mid; } else if(t < 0) { right = mid - width;