Subject: bug#5114: 23.1.50; (string-to-number (number-to-string most-positive-fixnum))

From: Eli Zaretskii <[email-masked]>
Date: Sat, 05 Dec 2009 18:44:42 +0200

> From: Helmut Eller <[email-masked]>
> Date: Sat, 05 Dec 2009 16:18:13 +0100
> Cc: 
> 
> * Eli Zaretskii [2009-12-05 15:25+0100] writes:
> 
> >> From: Helmut Eller <[email-masked]>
> >> Date: Sat, 05 Dec 2009 13:36:41 +0100
> >> Cc: [email-masked]
> >> 
> >> +  else {
> >> +    unsigned long u = 0;
> >
> > This assumes that `unsigned long' is the same width as EMACS_INT.
> > This could be false, e.g., with 64-bit MS-Windows.  Isn't it better to
> > use EMACS_INT instead?
> 
> Using EMACS_UINT wouldn't hurt.  Does MOST_POSITIVE_FIXNUM not fit in a
> unsigned long on Windows?

In the 32-bit Windows build, it does.  In the 64-bit Windows build
(which does not yet exist, since we don't yet support it), it will
not, because MS in their infinite wisdom (probably because backward
compatibility considerations wrt existing source code and headers)
decided to use the LLP64 programming model.

> I assumed that longs are supposed to be as wide as pointers.

Not on 64-bit Windows, they don't.