diff options
| author | Tom Tromey | 2018-07-06 23:44:30 -0600 |
|---|---|---|
| committer | Tom Tromey | 2018-07-12 22:12:27 -0600 |
| commit | c7e393bc4130c871a92fef7e9ac0c7c1832aa614 (patch) | |
| tree | 7f7c7de5605307774738d064a94e11ea21d9a6c7 /src | |
| parent | 0d868917efb46400cf7dd57a1cdbba7404f322a7 (diff) | |
| download | emacs-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.c | 16 |
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 | ||