GNU bug report logs - #32485
27.0.50; Problem with zerop on 32-bit platforms

Previous Next

Package: emacs;

Reported by: Ken Brown <kbrown <at> cornell.edu>

Date: Mon, 20 Aug 2018 18:14:01 UTC

Severity: normal

Found in version 27.0.50

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#32485: closed (27.0.50; Problem with zerop on 32-bit platforms)
Date: Tue, 21 Aug 2018 20:55:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 21 Aug 2018 13:54:11 -0700
with message-id <ac8b04ca-f2f8-db91-db97-993ff2d71f7e <at> cs.ucla.edu>
and subject line Re: bug#32485: 27.0.50; Problem with zerop on 32-bit platforms
has caused the debbugs.gnu.org bug report #32485,
regarding 27.0.50; Problem with zerop on 32-bit platforms
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
32485: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32485
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ken Brown <kbrown <at> cornell.edu>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; Problem with zerop on 32-bit platforms
Date: Mon, 20 Aug 2018 14:12:54 -0400
Evaluating (zerop (lsh -1 32)) on 32-bit Cygwin yields

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p 
-4294967296)

I realize that the fate of lsh is still being debated, but I think
there's a problem with zerop anyway, because directly evaluating (zerop
-4294967296) leads to the same error.

I encountered this problem because vc-hg-state-fast contains the
following:

         ;; We want to store 32-bit unsigned values in fixnums.
         (zerop (lsh -1 32))

Aside from the fact that this leads to an error, it may need to be
changed once a decision is made about lsh.



In GNU Emacs 27.0.50 (build 10, i686-pc-cygwin)
 of 2018-08-20 built on moufang
Repository revision: ecd7a9407711ebe24d7e07d4402a2d66754ee693



[Message part 3 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Ken Brown <kbrown <at> cornell.edu>
Cc: 32485-done <at> debbugs.gnu.org, Andy Moreton <andrewjmoreton <at> gmail.com>
Subject: Re: bug#32485: 27.0.50; Problem with zerop on 32-bit platforms
Date: Tue, 21 Aug 2018 13:54:11 -0700
[Message part 4 (text/plain, inline)]
> vc-hg-state-fast might still need 
> attention.  Currently (zerop (lsh -1 32)) returns nil on all platforms, 
> so it's useless; but that might change

This prompted me to audit the uses of lsh in the Emacs source code. I found and 
fixed a few glitches by installing the attached patch; in particular it fixes 
vg-hg-state-fast by using ash instead, as ash's semantics are clear and not 
subject to change. This patch goes further in this direction by replacing lsh 
with ash when either will do.

As this fixes the remaining problems mentioned in this bug report, I'm boldly 
closing the report.
[0001-Audit-use-of-lsh-and-fix-glitches.patch (text/x-patch, attachment)]

This bug report was last modified 6 years and 357 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.