Hi David,

On 01/23/20 15:46 pm, David Holmes wrote:
>
> So on 32-bit size_t is 32-bit and so may have ~half the capacity allowed 
> for by the jlong size variable. On 64-bit overflow is not possible 
> because jlong is signed and size_t is not.
>
> So we only need an overflow check on 32-bit.

OK. So wrap the check in #ifndef _LP64?

>
> But your checks don't look correct to me. If size is already aligned to 
> HeapWordSize then "sz < (size_t)size" won't be true but you already have 
> a completely bogus value for sz when you truncated size to 32-bits.
>

On a 32-bit system we already know the upper 32-bits of `size' are zero
because Unsafe.checkSize() checks this prior to calling the native
function, so I think the cast is OK.

Thanks,
Nick

Reply via email to