Audit use of lsh and fix glitches
I audited use of lsh in the Lisp source code, and fixed the glitches that I found. While I was at it, I replaced uses of lsh with ash when either will do. Replacement is OK when either argument is known to be nonnegative, or when only the low-order bits of the result matter, and is a (minor) win since ash is a bit more solid than lsh nowadays, and is a bit faster. * lisp/calc/calc-ext.el (math-check-fixnum): Prefer most-positive-fixnum to (lsh -1 -1). * lisp/vc/vc-hg.el (vc-hg-state-fast): When testing fixnum width, prefer (zerop (ash most-positive-fixnum -32)) to (zerop (lsh -1 32)) (Bug#32485#11). * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode): Tighten sanity-check for bytecode overflow, by checking that the result of (ash pc -8) is nonnegative. Formerly this check was not needed since lsh was used and the number overflowed differently. * lisp/net/dns.el (dns-write): Fix some obvious sign typos in shift counts. Evidently this part of the code has never been exercised. * lisp/progmodes/hideif.el (hif-shiftleft, hif-shiftright): * lisp/term/common-win.el (x-setup-function-keys): Simplify. * admin/unidata/unidata-gen.el, admin/unidata/uvs.el: * doc/lispref/keymaps.texi, doc/lispref/syntax.texi: * doc/misc/calc.texi, doc/misc/cl.texi, etc/NEWS.19: * lisp/arc-mode.el, lisp/calc/calc-bin.el, lisp/calc/calc-comb.el: * lisp/calc/calc-ext.el, lisp/calc/calc-math.el: * lisp/cedet/semantic/wisent/comp.el, lisp/composite.el: * lisp/disp-table.el, lisp/dos-fns.el, lisp/edmacro.el: * lisp/emacs-lisp/bindat.el, lisp/emacs-lisp/byte-opt.el: * lisp/emacs-lisp/bytecomp.el, lisp/emacs-lisp/cl-extra.el: * lisp/erc/erc-dcc.el, lisp/facemenu.el, lisp/gnus/message.el: * lisp/gnus/nndoc.el, lisp/gnus/nnmaildir.el, lisp/image.el: * lisp/international/ccl.el, lisp/international/fontset.el: * lisp/international/mule-cmds.el, lisp/international/mule.el: * lisp/json.el, lisp/mail/binhex.el, lisp/mail/rmail.el: * lisp/mail/uudecode.el, lisp/md4.el, lisp/net/dns.el: * lisp/net/ntlm.el, lisp/net/sasl.el, lisp/net/socks.el: * lisp/net/tramp.el, lisp/obsolete/levents.el: * lisp/obsolete/pgg-parse.el, lisp/org/org.el: * lisp/org/ox-publish.el, lisp/progmodes/cc-defs.el: * lisp/progmodes/ebnf2ps.el, lisp/progmodes/hideif.el: * lisp/ps-bdf.el, lisp/ps-print.el, lisp/simple.el: * lisp/tar-mode.el, lisp/term/common-win.el: * lisp/term/tty-colors.el, lisp/term/xterm.el, lisp/vc/vc-git.el: * lisp/vc/vc-hg.el, lisp/x-dnd.el, test/src/data-tests.el: Prefer ash to lsh when either will do.
This commit is contained in:
parent
81e7eef822
commit
f18af6cd5c
59 changed files with 235 additions and 239 deletions
|
@ -205,22 +205,22 @@
|
|||
(setq bindat-idx (1+ bindat-idx))))
|
||||
|
||||
(defun bindat--unpack-u16 ()
|
||||
(logior (lsh (bindat--unpack-u8) 8) (bindat--unpack-u8)))
|
||||
(logior (ash (bindat--unpack-u8) 8) (bindat--unpack-u8)))
|
||||
|
||||
(defun bindat--unpack-u24 ()
|
||||
(logior (lsh (bindat--unpack-u16) 8) (bindat--unpack-u8)))
|
||||
(logior (ash (bindat--unpack-u16) 8) (bindat--unpack-u8)))
|
||||
|
||||
(defun bindat--unpack-u32 ()
|
||||
(logior (lsh (bindat--unpack-u16) 16) (bindat--unpack-u16)))
|
||||
(logior (ash (bindat--unpack-u16) 16) (bindat--unpack-u16)))
|
||||
|
||||
(defun bindat--unpack-u16r ()
|
||||
(logior (bindat--unpack-u8) (lsh (bindat--unpack-u8) 8)))
|
||||
(logior (bindat--unpack-u8) (ash (bindat--unpack-u8) 8)))
|
||||
|
||||
(defun bindat--unpack-u24r ()
|
||||
(logior (bindat--unpack-u16r) (lsh (bindat--unpack-u8) 16)))
|
||||
(logior (bindat--unpack-u16r) (ash (bindat--unpack-u8) 16)))
|
||||
|
||||
(defun bindat--unpack-u32r ()
|
||||
(logior (bindat--unpack-u16r) (lsh (bindat--unpack-u16r) 16)))
|
||||
(logior (bindat--unpack-u16r) (ash (bindat--unpack-u16r) 16)))
|
||||
|
||||
(defun bindat--unpack-item (type len &optional vectype)
|
||||
(if (eq type 'ip)
|
||||
|
@ -250,7 +250,7 @@
|
|||
(if (/= 0 (logand m j))
|
||||
(setq bits (cons bnum bits)))
|
||||
(setq bnum (1- bnum)
|
||||
j (lsh j -1)))))
|
||||
j (ash j -1)))))
|
||||
bits))
|
||||
((eq type 'str)
|
||||
(let ((s (substring bindat-raw bindat-idx (+ bindat-idx len))))
|
||||
|
@ -459,30 +459,30 @@ e.g. corresponding to STRUCT.FIELD1[INDEX2].FIELD3..."
|
|||
(setq bindat-idx (1+ bindat-idx)))
|
||||
|
||||
(defun bindat--pack-u16 (v)
|
||||
(aset bindat-raw bindat-idx (logand (lsh v -8) 255))
|
||||
(aset bindat-raw bindat-idx (logand (ash v -8) 255))
|
||||
(aset bindat-raw (1+ bindat-idx) (logand v 255))
|
||||
(setq bindat-idx (+ bindat-idx 2)))
|
||||
|
||||
(defun bindat--pack-u24 (v)
|
||||
(bindat--pack-u8 (lsh v -16))
|
||||
(bindat--pack-u8 (ash v -16))
|
||||
(bindat--pack-u16 v))
|
||||
|
||||
(defun bindat--pack-u32 (v)
|
||||
(bindat--pack-u16 (lsh v -16))
|
||||
(bindat--pack-u16 (ash v -16))
|
||||
(bindat--pack-u16 v))
|
||||
|
||||
(defun bindat--pack-u16r (v)
|
||||
(aset bindat-raw (1+ bindat-idx) (logand (lsh v -8) 255))
|
||||
(aset bindat-raw (1+ bindat-idx) (logand (ash v -8) 255))
|
||||
(aset bindat-raw bindat-idx (logand v 255))
|
||||
(setq bindat-idx (+ bindat-idx 2)))
|
||||
|
||||
(defun bindat--pack-u24r (v)
|
||||
(bindat--pack-u16r v)
|
||||
(bindat--pack-u8 (lsh v -16)))
|
||||
(bindat--pack-u8 (ash v -16)))
|
||||
|
||||
(defun bindat--pack-u32r (v)
|
||||
(bindat--pack-u16r v)
|
||||
(bindat--pack-u16r (lsh v -16)))
|
||||
(bindat--pack-u16r (ash v -16)))
|
||||
|
||||
(defun bindat--pack-item (v type len &optional vectype)
|
||||
(if (eq type 'ip)
|
||||
|
@ -515,7 +515,7 @@ e.g. corresponding to STRUCT.FIELD1[INDEX2].FIELD3..."
|
|||
(if (memq bnum v)
|
||||
(setq m (logior m j)))
|
||||
(setq bnum (1- bnum)
|
||||
j (lsh j -1))))
|
||||
j (ash j -1))))
|
||||
(bindat--pack-u8 m))))
|
||||
((memq type '(str strz))
|
||||
(let ((l (length v)) (i 0))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue