Calc: don't treat nil as an integer (bug#40155)

Make Math-num-integerp return false for nil, following Math-integerp
which was changed in the bignum reform.  This fixes a crash in
calc-graph-fast.

Reported by Narendra Joshi.

* lisp/calc/calc-macs.el (Math-num-integerp): Not true for nil.
* test/lisp/calc/calc-tests.el (calc-Math-integerp): New tests.
This commit is contained in:
Mattias Engdegård 2020-03-27 18:11:18 +01:00
parent e1f0e08922
commit c2b8ce4439
2 changed files with 14 additions and 2 deletions

View file

@ -161,8 +161,9 @@
hms date mod var))))
(defsubst Math-num-integerp (a)
(or (not (consp a))
(and (eq (car a) 'float)
(or (integerp a)
(and (consp a)
(eq (car a) 'float)
(>= (nth 2 a) 0))))
(defsubst Math-equal-int (a b)

View file

@ -334,6 +334,17 @@ An existing calc stack is reused, otherwise a new one is created."
(should (equal tos '(- (* 2 (var x var-x)) 4)))
(should (equal trail "pdiv 2 * x - 4\nprem 8 * x + 1\n"))))))
(ert-deftest calc-Math-integerp ()
(should (Math-integerp -7))
(should (Math-integerp (ash 1 65)))
(should-not (Math-integerp '(float 1 0)))
(should-not (Math-integerp nil))
(should (Math-num-integerp -7))
(should (Math-num-integerp (ash 1 65)))
(should (Math-num-integerp '(float 1 0)))
(should-not (Math-integerp nil)))
(provide 'calc-tests)
;;; calc-tests.el ends here