X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/5f4d86c1219d56604890d932a3152b3b5dd15b55..34e8f8296870d0e8695f90e1a54240a589d41312:/stdlib/FreeBSD/bsearch.c.patch diff --git a/stdlib/FreeBSD/bsearch.c.patch b/stdlib/FreeBSD/bsearch.c.patch new file mode 100644 index 0000000..398758a --- /dev/null +++ b/stdlib/FreeBSD/bsearch.c.patch @@ -0,0 +1,34 @@ +--- bsearch.c.orig 2009-05-12 11:21:33.000000000 -0700 ++++ bsearch.c 2009-05-20 13:11:05.000000000 -0700 +@@ -81,3 +81,31 @@ bsearch(key, base0, nmemb, size, compar) + } + return (NULL); + } ++ ++#ifdef __BLOCKS__ ++void * ++bsearch_b(key, base0, nmemb, size, compar) ++ const void *key; ++ const void *base0; ++ size_t nmemb; ++ size_t size; ++ int (^compar)(const void *, const void *); ++{ ++ const char *base = base0; ++ size_t lim; ++ int cmp; ++ const void *p; ++ ++ for (lim = nmemb; lim != 0; lim >>= 1) { ++ p = base + (lim >> 1) * size; ++ cmp = compar(key, p); ++ if (cmp == 0) ++ return ((void *)p); ++ if (cmp > 0) { /* key > p: move right */ ++ base = (char *)p + size; ++ lim--; ++ } /* else move left */ ++ } ++ return (NULL); ++} ++#endif /* __BLOCKS__ */