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:
parent
e1f0e08922
commit
c2b8ce4439
2 changed files with 14 additions and 2 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue