Subject: bug#32463: 27.0.50; (logior -1) => 4611686018427387903

From: Katsumi Yamaoka <[email-masked]>
Date: Fri, 17 Aug 2018 12:29:45 +0900

Hi,

What do I have to do to get -1 by `(logior -1)' ?  Otherwise,
is it just a bug?  Setting `binary-as-unsigned' has no effect.

I'm using an old input method sj3-egg[1] but it got not to work.
The following Lisp snippet shows what it does first when opening
the connection to the sj3 server:

(with-temp-buffer
  (set-buffer-multibyte nil)
  (let ((pt (point-min)))
    (insert "\377\377\377\376")
    (logior
     (lsh (- (logxor (char-after pt) 128) 128) 24)
     (lsh (char-after (+ pt 1)) 16)
     (lsh (char-after (+ pt 2)) 8)
     (lsh (char-after (+ pt 3)) 0))))

It should return -2, but 4611686018427387902 now.
(Oh, it's doubled most-positive-fixnum!)

Thanks.

[1] http://www.jpl.org/ftp/pub/elisp/sj3-egg-0.8.5.tar.gz

In GNU Emacs 27.0.50 (build 1, x86_64-unknown-cygwin, GTK+ Version 3.22.28)
 of 2018-08-17 built on localhost
Windowing system distributor 'The Cygwin/X Project', version 11.0.12000000