svn commit: r233147 - stable/8/lib/libc/string
Tim Kientzle
tim at kientzle.com
Mon Mar 19 02:32:18 UTC 2012
On Mar 18, 2012, at 7:17 PM, Jason Hellenthal wrote:
>
>
> 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 at dataix.net> wrote:
>>>
>>>
>>> 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
>>>>
>>>> Log:
>>>> MFC r232503:
>>>> POSIX mandates that swab do nothing when len < 0
>>>>
>>>> PR: 140690
>>>> Approved by: cperciva
>>>>
>>>> Modified: stable/8/lib/libc/string/swab.c
>>>> ==============================================================================
>>>> --- 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;
>>>>
>>>> + if (len <= 0)
>>>> + return;
>>>
>>> Does this not test to see if it is also equal to 0(zero) ?
>>>
>>> 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...
>>
>> If the code doesn't check for len <= 0 then it will do something.
>>
>
> To my understanding of the specification it should only return if len is
> negative... 0 is not a negative number.
From POSIX:
> The swab() function shall copy nbytes bytes…
This implies that it does nothing when the argument is zero.
The check for <= 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
More information about the svn-src-all
mailing list