X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f Date: Mon, 26 Jan 2004 12:30:45 +0200 (EET) From: Esa A E Peuha Sender: peuha AT sirppi DOT helsinki DOT fi To: djgpp-workers AT delorie DOT com Subject: Re: Patch for bsearch In-Reply-To: Message-ID: References: <200401201626 DOT i0KGQ7d8026812 AT envy DOT delorie DOT com> <2719-Fri23Jan2004144638+0200-eliz AT elta DOT co DOT il> <200401231353 DOT i0NDrU74021571 AT envy DOT delorie DOT com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Mon, 26 Jan 2004, Eli Zaretskii wrote: > I'd prefer that the part that does pointer arithmetics would still > cast the pointer to a char *. Like this? Index: bsearch.c =================================================================== RCS file: /cvs/djgpp/djgpp/src/libc/ansi/stdlib/bsearch.c,v retrieving revision 1.1 diff -u -r1.1 bsearch.c --- bsearch.c 26 Dec 1994 20:35:04 -0000 1.1 +++ bsearch.c 26 Jan 2004 10:26:49 -0000 @@ -3,24 +3,23 @@ #include void * -bsearch(const void *key, const void *base0, size_t nelem, +bsearch(const void *key, const void *base, size_t nelem, size_t size, int (*cmp)(const void *ck, const void *ce)) { - char *base = unconst(base0, char *); int lim, cmpval; - void *p; + const void *p; for (lim = nelem; lim != 0; lim >>= 1) { - p = base + (lim >> 1) * size; + p = (const char *)base + (lim >> 1) * size; cmpval = (*cmp)(key, p); if (cmpval == 0) - return p; + return unconst(p, void *); if (cmpval > 0) { /* key > p: move right */ - base = (char *)p + size; + base = (const char *)p + size; lim--; } /* else move left */ } - return 0; + return NULL; } -- Esa Peuha student of mathematics at the University of Helsinki http://www.helsinki.fi/~peuha/