[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master b354935 1/2: Fix `memql' for bignums
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master b354935 1/2: Fix `memql' for bignums |
Date: |
Thu, 30 May 2019 17:58:20 -0400 (EDT) |
branch: master
commit b354935902d3820f59e34e18a47264122e99c1a4
Author: Mattias EngdegÄrd <address@hidden>
Commit: Paul Eggert <address@hidden>
Fix `memql' for bignums
* src/fns.c (Fmemql): Make `memql' work for bignums.
* test/src/fns-tests.el (test-bignum-eql): Also test `memql'.
---
src/fns.c | 34 ++++++++++++++++++++++++----------
test/src/fns-tests.el | 3 ++-
2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/src/fns.c b/src/fns.c
index 6b1f733..da830a9 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1567,18 +1567,32 @@ DEFUN ("memql", Fmemql, Smemql, 2, 2, 0,
The value is actually the tail of LIST whose car is ELT. */)
(Lisp_Object elt, Lisp_Object list)
{
- if (!FLOATP (elt))
- return Fmemq (elt, list);
-
- Lisp_Object tail = list;
- FOR_EACH_TAIL (tail)
+ if (FLOATP (elt))
{
- Lisp_Object tem = XCAR (tail);
- if (FLOATP (tem) && same_float (elt, tem))
- return tail;
+ Lisp_Object tail = list;
+ FOR_EACH_TAIL (tail)
+ {
+ Lisp_Object tem = XCAR (tail);
+ if (FLOATP (tem) && same_float (elt, tem))
+ return tail;
+ }
+ CHECK_LIST_END (tail, list);
+ return Qnil;
}
- CHECK_LIST_END (tail, list);
- return Qnil;
+ else if (BIGNUMP (elt))
+ {
+ Lisp_Object tail = list;
+ FOR_EACH_TAIL (tail)
+ {
+ Lisp_Object tem = XCAR (tail);
+ if (equal_no_quit (elt, tem))
+ return tail;
+ }
+ CHECK_LIST_END (tail, list);
+ return Qnil;
+ }
+ else
+ return Fmemq (elt, list);
}
DEFUN ("assq", Fassq, Sassq, 2, 2, 0,
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index 6ebab42..a9d4d11 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -614,7 +614,8 @@
(should (eq x x))
(should (eql x y))
(should (equal x y))
- (should-not (eql x 0.0e+NaN))))
+ (should-not (eql x 0.0e+NaN))
+ (should (memql x (list y)))))
(ert-deftest test-bignum-hash ()
"Test that hash tables work for bignums."