guile-devel
[Top][All Lists]
Advanced

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

Re: Guile 1.5.8 beta available for testing.


From: Marius Vollmer
Subject: Re: Guile 1.5.8 beta available for testing.
Date: 28 Aug 2002 18:28:57 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

"Lars J. Aas" <address@hidden> writes:

> I'd appreciate it if the SCM_POSFIXABLE() bug, steming from the
> fallback SCM_LONG_BIT define in __scm.h, was fixed before 1.6 was
> released.

I'm not yet satisfied with the analysis.  As far as I can see, the
problem lies not with SCM_LONG_BIT being unsigned incorrectly, but
with SCM_MOST_POSITIVE_FIXNUM being unsigned incorrectly.

We compute SCM_MOST_POSITIVE_FIXNUM like this

  ((((scm_t_signed_bits) 1) << (SCM_I_FIXNUM_BIT - 1)) - 1)

where SCM_I_FIXNUM_BIT is unsigned when SCM_LONG_BIT is.  However, the
type of the result of a bit-shift operator is that of the promoted
left operand (6.5.7;3 in the ANSI C standard).  So
SCM_MOST_POSITIVE_FIXNUM is signed since scm_t_signed_bits is.

Your compiler seems to get this wrong, right?

A fix would be to move the scm_t_signed_bits cast one level up, and
also in SCM_MOST_NEGATIVE_FIXNUM.  We should do that and put a
deriding comment about MS on the code.  OK?

Is that the only issue holding off a plain build of 1.5.8 with the
Microsoft compiler?  If there are others, we shouldn't bother to work
around this particular bug in the release.

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405




reply via email to

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