Skip site navigation (1)Skip section navigation (2)
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>