diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fns.c | 20 |
1 files changed, 18 insertions, 2 deletions
| @@ -1563,7 +1563,15 @@ If N is zero or negative, return nil. | |||
| 1563 | If N is greater or equal to the length of LIST, return LIST (or a copy). */) | 1563 | If N is greater or equal to the length of LIST, return LIST (or a copy). */) |
| 1564 | (Lisp_Object n, Lisp_Object list) | 1564 | (Lisp_Object n, Lisp_Object list) |
| 1565 | { | 1565 | { |
| 1566 | CHECK_FIXNUM (n); | 1566 | if (BIGNUMP (n)) |
| 1567 | { | ||
| 1568 | if (mpz_sgn (*xbignum_val (n)) < 0) | ||
| 1569 | return Qnil; | ||
| 1570 | CHECK_LIST (list); | ||
| 1571 | return list; | ||
| 1572 | } | ||
| 1573 | if (!FIXNUMP (n)) | ||
| 1574 | wrong_type_argument (Qintegerp, n); | ||
| 1567 | EMACS_INT m = XFIXNUM (n); | 1575 | EMACS_INT m = XFIXNUM (n); |
| 1568 | if (m <= 0) | 1576 | if (m <= 0) |
| 1569 | return Qnil; | 1577 | return Qnil; |
| @@ -1594,7 +1602,15 @@ If N is greater or equal to the length of LIST, return LIST unmodified. | |||
| 1594 | Otherwise, return LIST after truncating it. */) | 1602 | Otherwise, return LIST after truncating it. */) |
| 1595 | (Lisp_Object n, Lisp_Object list) | 1603 | (Lisp_Object n, Lisp_Object list) |
| 1596 | { | 1604 | { |
| 1597 | CHECK_FIXNUM (n); | 1605 | if (BIGNUMP (n)) |
| 1606 | { | ||
| 1607 | if (mpz_sgn (*xbignum_val (n)) < 0) | ||
| 1608 | return Qnil; | ||
| 1609 | CHECK_LIST (list); | ||
| 1610 | return list; | ||
| 1611 | } | ||
| 1612 | if (!FIXNUMP (n)) | ||
| 1613 | wrong_type_argument (Qintegerp, n); | ||
| 1598 | EMACS_INT m = XFIXNUM (n); | 1614 | EMACS_INT m = XFIXNUM (n); |
| 1599 | if (m <= 0) | 1615 | if (m <= 0) |
| 1600 | return Qnil; | 1616 | return Qnil; |