aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTom Tromey2018-07-06 23:44:30 -0600
committerTom Tromey2018-07-12 22:12:27 -0600
commitc7e393bc4130c871a92fef7e9ac0c7c1832aa614 (patch)
tree7f7c7de5605307774738d064a94e11ea21d9a6c7 /src
parent0d868917efb46400cf7dd57a1cdbba7404f322a7 (diff)
downloademacs-c7e393bc4130c871a92fef7e9ac0c7c1832aa614.tar.gz
emacs-c7e393bc4130c871a92fef7e9ac0c7c1832aa614.zip
Make lognot handle bignums
* src/data.c (Flognot): Handle bignums.
Diffstat (limited to 'src')
-rw-r--r--src/data.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/data.c b/src/data.c
index d7175683c89..c9504694e37 100644
--- a/src/data.c
+++ b/src/data.c
@@ -3306,8 +3306,20 @@ DEFUN ("lognot", Flognot, Slognot, 1, 1, 0,
3306 doc: /* Return the bitwise complement of NUMBER. NUMBER must be an integer. */) 3306 doc: /* Return the bitwise complement of NUMBER. NUMBER must be an integer. */)
3307 (register Lisp_Object number) 3307 (register Lisp_Object number)
3308{ 3308{
3309 CHECK_FIXNUM (number); 3309 CHECK_INTEGER (number);
3310 XSETINT (number, ~XINT (number)); 3310 if (BIGNUMP (number))
3311 {
3312 mpz_t value;
3313 mpz_init (value);
3314 mpz_com (value, XBIGNUM (number)->value);
3315 number = make_number (value);
3316 mpz_clear (value);
3317 }
3318 else
3319 {
3320 eassume (FIXNUMP (number));
3321 XSETINT (number, ~XINT (number));
3322 }
3311 return number; 3323 return number;
3312} 3324}
3313 3325