diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 34 |
1 files changed, 3 insertions, 31 deletions
diff --git a/src/data.c b/src/data.c index 7be2052362b..66f69e7e83a 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -2653,17 +2653,7 @@ cons_to_unsigned (Lisp_Object c, uintmax_t max) | |||
| 2653 | else | 2653 | else |
| 2654 | { | 2654 | { |
| 2655 | Lisp_Object hi = CONSP (c) ? XCAR (c) : c; | 2655 | Lisp_Object hi = CONSP (c) ? XCAR (c) : c; |
| 2656 | 2656 | valid = integer_to_uintmax (hi, &val); | |
| 2657 | if (FIXNUMP (hi)) | ||
| 2658 | { | ||
| 2659 | val = XFIXNUM (hi); | ||
| 2660 | valid = 0 <= val; | ||
| 2661 | } | ||
| 2662 | else | ||
| 2663 | { | ||
| 2664 | val = bignum_to_uintmax (hi); | ||
| 2665 | valid = val != 0; | ||
| 2666 | } | ||
| 2667 | 2657 | ||
| 2668 | if (valid && CONSP (c)) | 2658 | if (valid && CONSP (c)) |
| 2669 | { | 2659 | { |
| @@ -2724,17 +2714,7 @@ cons_to_signed (Lisp_Object c, intmax_t min, intmax_t max) | |||
| 2724 | else | 2714 | else |
| 2725 | { | 2715 | { |
| 2726 | Lisp_Object hi = CONSP (c) ? XCAR (c) : c; | 2716 | Lisp_Object hi = CONSP (c) ? XCAR (c) : c; |
| 2727 | 2717 | valid = integer_to_intmax (hi, &val); | |
| 2728 | if (FIXNUMP (hi)) | ||
| 2729 | { | ||
| 2730 | val = XFIXNUM (hi); | ||
| 2731 | valid = true; | ||
| 2732 | } | ||
| 2733 | else if (BIGNUMP (hi)) | ||
| 2734 | { | ||
| 2735 | val = bignum_to_intmax (hi); | ||
| 2736 | valid = val != 0; | ||
| 2737 | } | ||
| 2738 | 2718 | ||
| 2739 | if (valid && CONSP (c)) | 2719 | if (valid && CONSP (c)) |
| 2740 | { | 2720 | { |
| @@ -2972,16 +2952,8 @@ arith_driver (enum arithop code, ptrdiff_t nargs, Lisp_Object *args, | |||
| 2972 | 2952 | ||
| 2973 | /* Set NEXT to the next value if it fits, else exit the loop. */ | 2953 | /* Set NEXT to the next value if it fits, else exit the loop. */ |
| 2974 | intmax_t next; | 2954 | intmax_t next; |
| 2975 | if (FIXNUMP (val)) | 2955 | if (! (INTEGERP (val) && integer_to_intmax (val, &next))) |
| 2976 | next = XFIXNUM (val); | ||
| 2977 | else if (FLOATP (val)) | ||
| 2978 | break; | 2956 | break; |
| 2979 | else | ||
| 2980 | { | ||
| 2981 | next = bignum_to_intmax (val); | ||
| 2982 | if (next == 0) | ||
| 2983 | break; | ||
| 2984 | } | ||
| 2985 | 2957 | ||
| 2986 | /* Set ACCUM to the next operation's result if it fits, | 2958 | /* Set ACCUM to the next operation's result if it fits, |
| 2987 | else exit the loop. */ | 2959 | else exit the loop. */ |