diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/data.c b/src/data.c index 073fb0d4926..ce0e8e40f51 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -2494,8 +2494,9 @@ arith_driver (enum arithop code, size_t nargs, register Lisp_Object *args) | |||
| 2494 | case Amult: | 2494 | case Amult: |
| 2495 | if (INT_MULTIPLY_OVERFLOW (accum, next)) | 2495 | if (INT_MULTIPLY_OVERFLOW (accum, next)) |
| 2496 | { | 2496 | { |
| 2497 | EMACS_UINT a = accum, b = next, ab = a * b; | ||
| 2497 | overflow = 1; | 2498 | overflow = 1; |
| 2498 | accum = (EMACS_UINT) accum * (EMACS_UINT) next & INTMASK; | 2499 | accum = ab & INTMASK; |
| 2499 | } | 2500 | } |
| 2500 | else | 2501 | else |
| 2501 | accum *= next; | 2502 | accum *= next; |
| @@ -2792,11 +2793,11 @@ In this case, zeros are shifted in on the left. */) | |||
| 2792 | if (XINT (count) >= BITS_PER_EMACS_INT) | 2793 | if (XINT (count) >= BITS_PER_EMACS_INT) |
| 2793 | XSETINT (val, 0); | 2794 | XSETINT (val, 0); |
| 2794 | else if (XINT (count) > 0) | 2795 | else if (XINT (count) > 0) |
| 2795 | XSETINT (val, (EMACS_UINT) XUINT (value) << XFASTINT (count)); | 2796 | XSETINT (val, XUINT (value) << XFASTINT (count)); |
| 2796 | else if (XINT (count) <= -BITS_PER_EMACS_INT) | 2797 | else if (XINT (count) <= -BITS_PER_EMACS_INT) |
| 2797 | XSETINT (val, 0); | 2798 | XSETINT (val, 0); |
| 2798 | else | 2799 | else |
| 2799 | XSETINT (val, (EMACS_UINT) XUINT (value) >> -XINT (count)); | 2800 | XSETINT (val, XUINT (value) >> -XINT (count)); |
| 2800 | return val; | 2801 | return val; |
| 2801 | } | 2802 | } |
| 2802 | 2803 | ||