Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Mar 2012 19:32:04 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Jason Hellenthal <jhellenthal@dataix.net>
Cc:        svn-src-stable@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Eitan Adler <eadler@FreeBSD.org>, svn-src-stable-8@FreeBSD.org
Subject:   Re: svn commit: r233147 - stable/8/lib/libc/string
Message-ID:  <264991E4-B083-4E61-9337-E5882DED66C3@kientzle.com>
In-Reply-To: <20120319021724.GC13456@DataIX.net>
References:  <201203190127.q2J1RtgB044557@svn.freebsd.org> <20120319015203.GB13456@DataIX.net> <CAF6rxgkhiznBRU04%2Bc%2BDPdBj9Omg03SqeSd9-0Ct-FfxAVm95g@mail.gmail.com> <20120319021724.GC13456@DataIX.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Mar 18, 2012, at 7:17 PM, Jason Hellenthal wrote:

>=20
>=20
> On Sun, Mar 18, 2012 at 09:58:12PM -0400, Eitan Adler wrote:
>> On Sun, Mar 18, 2012 at 9:52 PM, Jason Hellenthal
>> <jhellenthal@dataix.net> wrote:
>>>=20
>>>=20
>>> On Mon, Mar 19, 2012 at 01:27:55AM +0000, Eitan Adler wrote:
>>>> Author: eadler
>>>> Date: Mon Mar 19 01:27:55 2012
>>>> New Revision: 233147
>>>> URL: http://svn.freebsd.org/changeset/base/233147
>>>>=20
>>>> Log:
>>>>   MFC r232503:
>>>>       POSIX mandates that swab do nothing when len < 0
>>>>=20
>>>>   PR:         140690
>>>>   Approved by:        cperciva
>>>>=20
>>>> Modified: stable/8/lib/libc/string/swab.c
>>>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>>>> --- stable/8/lib/libc/string/swab.c   Mon Mar 19 01:27:30 2012      =
  (r233146)
>>>> +++ stable/8/lib/libc/string/swab.c   Mon Mar 19 01:27:55 2012      =
  (r233147)
>>>> @@ -45,6 +45,8 @@ swab(const void * __restrict from, void
>>>>       int n;
>>>>       char *fp, *tp;
>>>>=20
>>>> +     if (len <=3D 0)
>>>> +             return;
>>>=20
>>> Does this not test to see if it is also equal to 0(zero) ?
>>>=20
>>> If I understand the above statement "POSIX mandates that swab do =
nothing
>>> when len < 0" then the above code should be exactly that ... and not
>>> testing whether it is equal to zero...
>>=20
>> If the code doesn't check for len <=3D 0 then it will do something.
>>=20
>=20
> To my understanding of the specification it should only return if len =
is
> negative... 0 is not a negative number.

=46rom POSIX:
> The swab() function shall copy nbytes bytes=85

This implies that it does nothing when the argument is zero.
The check for <=3D 0 is a performance optimization;
otherwise the code will do nothing in a more expensive
fashion.

> If nbytes is negative, swab() does nothing.

This states that it does nothing when the argument is less than zero.

So the change is correct; it covers both cases.

Tim




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?264991E4-B083-4E61-9337-E5882DED66C3>