]> git.eshelyaron.com Git - emacs.git/commitdiff
Calc: don't treat nil as an integer (bug#40155)
authorMattias Engdegård <mattiase@acm.org>
Fri, 27 Mar 2020 17:11:18 +0000 (18:11 +0100)
committerMattias Engdegård <mattiase@acm.org>
Fri, 27 Mar 2020 17:11:18 +0000 (18:11 +0100)
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.

lisp/calc/calc-macs.el
test/lisp/calc/calc-tests.el

index e73d108e6d99a52e59d96daa5d51498bbf0852fc..257d369b87ae9537f3e3c538a3211f81c666f77b 100644 (file)
                      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)
index 784b404898a8b75a5d8b57b79e995ac88421b3de..8fffb7c14b51b7089cfb3e12e63eafdf37f958a0 100644 (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