From 74a47d1fba2e5b01db681f75e35f2f78af62fc7c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 29 Dec 2003 13:51:54 +0000 Subject: [PATCH] (internal_equal): Return t for two NaN arguments. --- src/fns.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/fns.c b/src/fns.c index e4252c98ca5..ff40c706edd 100644 --- a/src/fns.c +++ b/src/fns.c @@ -2169,7 +2169,15 @@ internal_equal (o1, o2, depth) switch (XTYPE (o1)) { case Lisp_Float: - return (extract_float (o1) == extract_float (o2)); + { + double d1, d2; + + d1 = extract_float (o1); + d2 = extract_float (o2); + /* If d is a NaN, then d != d. Two NaNs should be `equal' even + though they are not =. */ + return d1 == d2 || (d1 != d1 && d2 != d2); + } case Lisp_Cons: if (!internal_equal (XCAR (o1), XCAR (o2), depth + 1)) -- 2.39.2