drem() (was: Re: [PATCH] KJS - fix toInt32 with some negativevalues (#61587))

Maks Orlovich mo002j at mail.rochester.edu
Thu Jul 24 13:46:04 BST 2003


Harri Porten wrote:

> Hi,
> 
> Maks Orlovich wrote:
>>
>> Currently, KJS mis-calculates toInt32 values for some negative numbers.
>> For example, -2478659068 is converted to 0x80000000, aka MIN_INT. This is
>> because the remainder for dividing this by 2^32 is negative, so we don't
>> readjust it (as it's certainly < 2^31) and below MIN_INT, so casting from
>> floating point to integer in ValueImp::toInt32 clamps. The attached diff
>> appears to be the proper fix to me. If this is OK,
> 
> Hmmm. You are right. Hadn't expected the result to become negative. How
> about drem() ? I didn't knew about it before. It seems to does the job
> nicely without the extra check. Is is portable ?
Hmm. Neat trick -- took me a bit to figure out why it works. I asked about
it on #kde-freebsd, though, and it doesn't seem like any recent FreeBSD
versions have it (at least the manpage isn't there since FreeBSD 2.0 era),
so I guess it goes as "no" under portable. Also, I guess toUInt32 might
need a similar fix? 





More information about the kfm-devel mailing list