diff options
| author | Paul Eggert | 2018-08-21 13:44:03 -0700 |
|---|---|---|
| committer | Paul Eggert | 2018-08-21 13:44:32 -0700 |
| commit | f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd (patch) | |
| tree | 5f42e48e12a0ec77bd5cd5f32255a534635e89bf /lisp/org | |
| parent | 81e7eef8224c8a99a207b7a7b9dae1d598392ef7 (diff) | |
| download | emacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.tar.gz emacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.zip | |
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.
Diffstat (limited to 'lisp/org')
| -rw-r--r-- | lisp/org/org.el | 2 | ||||
| -rw-r--r-- | lisp/org/ox-publish.el | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/lisp/org/org.el b/lisp/org/org.el index e45bc55b244..21d9cd8785d 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el | |||
| @@ -10058,7 +10058,7 @@ Note: this function also decodes single byte encodings like | |||
| 10058 | (cons 6 128)))) | 10058 | (cons 6 128)))) |
| 10059 | (when (>= val 192) (setq eat (car shift-xor))) | 10059 | (when (>= val 192) (setq eat (car shift-xor))) |
| 10060 | (setq val (logxor val (cdr shift-xor))) | 10060 | (setq val (logxor val (cdr shift-xor))) |
| 10061 | (setq sum (+ (lsh sum (car shift-xor)) val)) | 10061 | (setq sum (+ (ash sum (car shift-xor)) val)) |
| 10062 | (when (> eat 0) (setq eat (- eat 1))) | 10062 | (when (> eat 0) (setq eat (- eat 1))) |
| 10063 | (cond | 10063 | (cond |
| 10064 | ((= 0 eat) ;multi byte | 10064 | ((= 0 eat) ;multi byte |
diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el index 8901dba34cf..ba5a0232e42 100644 --- a/lisp/org/ox-publish.el +++ b/lisp/org/ox-publish.el | |||
| @@ -794,8 +794,8 @@ Default for SITEMAP-FILENAME is `sitemap.org'." | |||
| 794 | ((or `anti-chronologically `chronologically) | 794 | ((or `anti-chronologically `chronologically) |
| 795 | (let* ((adate (org-publish-find-date a project)) | 795 | (let* ((adate (org-publish-find-date a project)) |
| 796 | (bdate (org-publish-find-date b project)) | 796 | (bdate (org-publish-find-date b project)) |
| 797 | (A (+ (lsh (car adate) 16) (cadr adate))) | 797 | (A (+ (ash (car adate) 16) (cadr adate))) |
| 798 | (B (+ (lsh (car bdate) 16) (cadr bdate)))) | 798 | (B (+ (ash (car bdate) 16) (cadr bdate)))) |
| 799 | (setq retval | 799 | (setq retval |
| 800 | (if (eq sort-files 'chronologically) | 800 | (if (eq sort-files 'chronologically) |
| 801 | (<= A B) | 801 | (<= A B) |
| @@ -1348,7 +1348,7 @@ does not exist." | |||
| 1348 | (expand-file-name (or (file-symlink-p file) file) | 1348 | (expand-file-name (or (file-symlink-p file) file) |
| 1349 | (file-name-directory file))))) | 1349 | (file-name-directory file))))) |
| 1350 | (if (not attr) (error "No such file: \"%s\"" file) | 1350 | (if (not attr) (error "No such file: \"%s\"" file) |
| 1351 | (+ (lsh (car (nth 5 attr)) 16) | 1351 | (+ (ash (car (nth 5 attr)) 16) |
| 1352 | (cadr (nth 5 attr)))))) | 1352 | (cadr (nth 5 attr)))))) |
| 1353 | 1353 | ||
| 1354 | 1354 | ||