discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Missing implementations in NSScanner class


From: Niels Grewe
Subject: Re: Missing implementations in NSScanner class
Date: Thu, 16 Jan 2014 16:17:28 +0000

Am 16.01.2014 um 16:54 schrieb Niels Grewe <niels.grewe@halbordnung.de>:

> Hi Mathias,
> 
> first of all: Thanks for your patches! Unfortunately, this one is not correct 
> for 32bit systems. The reason is that NSInteger is pointer sized, so it’s a 
> 32bit quantity on 32bit platforms. On 32bit OS X/iOS, calling -scanInteger: 
> with a string representing a larger value (say „9223372036854775807“, aka 
> LLONG_MAX), will give you the maximum value an integer can hold, while your 
> solution will just do some implementation defined thing when casting the 
> 64bit value to 32bits. (I think most of the time, you just loose the higher 
> bits, so for „9223372036854775807", you might get -1 instead of 2147483647, 
> which would the correct result given the Apple implementation).

Actually, implementing a solution that doesn’t have this problem isn’t 
difficult at all. We know the pointer size at compile time, so we can just 
conditionally call either -scanInt: (on ILP32) or -scanLongLong: (on 
LP64/LLP64) to populate the NSInteger correctly. This is now in trunk.

Cheers,

Niels


reply via email to

[Prev in Thread] Current Thread [Next in Thread]