svn commit: r300377 - head/sys/compat/ndis

Pedro Giffuni pfg at FreeBSD.org
Sat May 21 22:40:12 UTC 2016



On 05/21/16 16:55, Conrad Meyer wrote:
> On Sat, May 21, 2016 at 1:40 PM, Pedro Giffuni <pfg at freebsd.org> wrote:
>>
>>
>> On 05/21/16 14:05, Conrad Meyer wrote:
>>> Won't this still return a negative integer in many cases?
>>>
>>> random(9) returns u_long, whereas this rand() routine returns 'int'.
>>>
>>> Even on architectures where long is the same size as ordinary
>>> integers, the range of possible results of the 'random() / 2 + 1'
>>> expression, before implicit cast to signed, is [1, 2^31] (inclusive).
>>
>>
>> According to:
>> sys/libkern/random.c
>>
>> The result is uniform on [0, 2^31 - 1].
>
> Ah, I missed that.  Sorry!  In that case, I'm not sure why this is
> needed — the result fits in a non-negative 2's complement signed
> integer.
>

Actually, I had missed it too. And I also had no idea we were working 
around the zero singularity.

I will revert the change and will do an adjustment for the case where
we use 0 as a seed (which in MS should be equivalent to 1).

Pedro.


More information about the svn-src-all mailing list