aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fns.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/fns.c b/src/fns.c
index da830a90004..cb47b818f17 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1521,7 +1521,7 @@ union double_and_words
1521 EMACS_UINT word[WORDS_PER_DOUBLE]; 1521 EMACS_UINT word[WORDS_PER_DOUBLE];
1522}; 1522};
1523 1523
1524/* Return true if X and Y are the same floating-point value. 1524/* Return true if the floats X and Y have the same value.
1525 This looks at X's and Y's representation, since (unlike '==') 1525 This looks at X's and Y's representation, since (unlike '==')
1526 it returns true if X and Y are the same NaN. */ 1526 it returns true if X and Y are the same NaN. */
1527static bool 1527static bool
@@ -1567,32 +1567,32 @@ DEFUN ("memql", Fmemql, Smemql, 2, 2, 0,
1567The value is actually the tail of LIST whose car is ELT. */) 1567The value is actually the tail of LIST whose car is ELT. */)
1568 (Lisp_Object elt, Lisp_Object list) 1568 (Lisp_Object elt, Lisp_Object list)
1569{ 1569{
1570 Lisp_Object tail = list;
1571
1570 if (FLOATP (elt)) 1572 if (FLOATP (elt))
1571 { 1573 {
1572 Lisp_Object tail = list;
1573 FOR_EACH_TAIL (tail) 1574 FOR_EACH_TAIL (tail)
1574 { 1575 {
1575 Lisp_Object tem = XCAR (tail); 1576 Lisp_Object tem = XCAR (tail);
1576 if (FLOATP (tem) && same_float (elt, tem)) 1577 if (FLOATP (tem) && same_float (elt, tem))
1577 return tail; 1578 return tail;
1578 } 1579 }
1579 CHECK_LIST_END (tail, list);
1580 return Qnil;
1581 } 1580 }
1582 else if (BIGNUMP (elt)) 1581 else if (BIGNUMP (elt))
1583 { 1582 {
1584 Lisp_Object tail = list;
1585 FOR_EACH_TAIL (tail) 1583 FOR_EACH_TAIL (tail)
1586 { 1584 {
1587 Lisp_Object tem = XCAR (tail); 1585 Lisp_Object tem = XCAR (tail);
1588 if (equal_no_quit (elt, tem)) 1586 if (BIGNUMP (tem)
1587 && mpz_cmp (XBIGNUM (elt)->value, XBIGNUM (tem)->value) == 0)
1589 return tail; 1588 return tail;
1590 } 1589 }
1591 CHECK_LIST_END (tail, list);
1592 return Qnil;
1593 } 1590 }
1594 else 1591 else
1595 return Fmemq (elt, list); 1592 return Fmemq (elt, list);
1593
1594 CHECK_LIST_END (tail, list);
1595 return Qnil;
1596} 1596}
1597 1597
1598DEFUN ("assq", Fassq, Sassq, 2, 2, 0, 1598DEFUN ("assq", Fassq, Sassq, 2, 2, 0,
@@ -2301,7 +2301,9 @@ This differs from numeric comparison: (eql 0.0 -0.0) returns nil and
2301 if (FLOATP (obj1)) 2301 if (FLOATP (obj1))
2302 return FLOATP (obj2) && same_float (obj1, obj2) ? Qt : Qnil; 2302 return FLOATP (obj2) && same_float (obj1, obj2) ? Qt : Qnil;
2303 else if (BIGNUMP (obj1)) 2303 else if (BIGNUMP (obj1))
2304 return equal_no_quit (obj1, obj2) ? Qt : Qnil; 2304 return ((BIGNUMP (obj2)
2305 && mpz_cmp (XBIGNUM (obj1)->value, XBIGNUM (obj2)->value) == 0)
2306 ? Qt : Qnil);
2305 else 2307 else
2306 return EQ (obj1, obj2) ? Qt : Qnil; 2308 return EQ (obj1, obj2) ? Qt : Qnil;
2307} 2309}