]> git.eshelyaron.com Git - emacs.git/commitdiff
Make lognot handle bignums
authorTom Tromey <tom@tromey.com>
Sat, 7 Jul 2018 05:44:30 +0000 (23:44 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 13 Jul 2018 04:12:27 +0000 (22:12 -0600)
* src/data.c (Flognot): Handle bignums.

src/data.c

index d7175683c8998bf8bfe4d6f66a2f7963dbe4691f..c9504694e371b00b10bd2c31e15770958aa43766 100644 (file)
@@ -3306,8 +3306,20 @@ DEFUN ("lognot", Flognot, Slognot, 1, 1, 0,
        doc: /* Return the bitwise complement of NUMBER.  NUMBER must be an integer.  */)
   (register Lisp_Object number)
 {
-  CHECK_FIXNUM (number);
-  XSETINT (number, ~XINT (number));
+  CHECK_INTEGER (number);
+  if (BIGNUMP (number))
+    {
+      mpz_t value;
+      mpz_init (value);
+      mpz_com (value, XBIGNUM (number)->value);
+      number = make_number (value);
+      mpz_clear (value);
+    }
+  else
+    {
+      eassume (FIXNUMP (number));
+      XSETINT (number, ~XINT (number));
+    }
   return number;
 }