On Fri, Oct 14, 2011 at 07:25:21AM +0000, Ed Schouten wrote:
> Author: ed
> Date: Fri Oct 14 07:25:20 2011
> New Revision: 226360
> URL: http://svn.freebsd.org/changeset/base/226360

> Log:
>   Build tr(1) with WARNS=6.

> Modified:
>   head/usr.bin/tr/Makefile
>   head/usr.bin/tr/cset.c
>   head/usr.bin/tr/str.c

> Modified: head/usr.bin/tr/cset.c
> ==============================================================================
> --- head/usr.bin/tr/cset.c    Fri Oct 14 07:24:48 2011        (r226359)
> +++ head/usr.bin/tr/cset.c    Fri Oct 14 07:25:20 2011        (r226360)
> @@ -153,11 +153,11 @@ cset_in_hard(struct cset *cs, wchar_t ch
>       struct csclass *csc;
>  
>       for (csc = cs->cs_classes; csc != NULL; csc = csc->csc_next)
> -             if (csc->csc_invert ^ iswctype(ch, csc->csc_type) != 0)
> +             if ((csc->csc_invert ^ iswctype(ch, csc->csc_type)) != 0)
>                       return (cs->cs_invert ^ true);
>       if (cs->cs_root != NULL) {
>               cs->cs_root = cset_splay(cs->cs_root, ch);
> -             return (cs->cs_invert ^ cset_rangecmp(cs->cs_root, ch) == 0);
> +             return ((cs->cs_invert ^ cset_rangecmp(cs->cs_root, ch)) == 0);
>       }
>       return (cs->cs_invert ^ false);
>  }

These two changes are wrong. Contrary to what one might expect, the !=
and == operators bind more strongly than the ^ operator, and the
original code depends on that.

-- 
Jilles Tjoelker
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to