Date: Tue, 03 Feb 2009 21:35:13 +0100 From: Christoph Mallon <christoph.mallon@gmx.de> To: Warner Losh <imp@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r188098 - head/lib/libc/string Message-ID: <4988AA81.6010903@gmx.de> In-Reply-To: <200902032025.n13KPaCV041012@svn.freebsd.org> References: <200902032025.n13KPaCV041012@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Warner Losh schrieb: > Author: imp > Date: Tue Feb 3 20:25:36 2009 > New Revision: 188098 > URL: http://svn.freebsd.org/changeset/base/188098 > > Log: > Fix the functions to match prototypes. The K&R definitions differ > from the ANSI-C prototype due to the 'int promotion' rule. > > Modified: > head/lib/libc/string/memchr.c > head/lib/libc/string/strmode.c > head/lib/libc/string/wmemset.c > > Modified: head/lib/libc/string/memchr.c > ============================================================================== > --- head/lib/libc/string/memchr.c Tue Feb 3 20:01:51 2009 (r188097) > +++ head/lib/libc/string/memchr.c Tue Feb 3 20:25:36 2009 (r188098) > @@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$"); > #include <string.h> > > void * > -memchr(const void *s, unsigned char c, size_t n) > +memchr(const void *s, int c, size_t n) > { > if (n != 0) { > const unsigned char *p = s; > This is not correct either, because now *p (of type unsigned char) gets compared with c (now type int). The manpage of memchr() states that "The memchr() function locates the first occurrence of c (converted to an unsigned char) in string b." The part in parentheses now is missing. This will break when you pass a negative number (e.g. -1, which should locate a byte with all bits set) to memchr().
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4988AA81.6010903>