diff options
| author | Mattias EngdegÄrd | 2022-08-30 16:44:51 +0200 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2022-08-30 16:48:25 +0200 |
| commit | e1e60e51bf324aaa2137075827c4d08a331a7bef (patch) | |
| tree | 7eb07197b4db9009b310ca85736076f0a97ac57d /src | |
| parent | 5cf7b1ada96c2e209580d086d15b1bbe5b345657 (diff) | |
| download | emacs-e1e60e51bf324aaa2137075827c4d08a331a7bef.tar.gz emacs-e1e60e51bf324aaa2137075827c4d08a331a7bef.zip | |
Accept bignum arguments in `take` and `ntake`
* src/fns.c (Ftake, Fntake): Accept any integer as first argument, for
completeness.
* test/src/fns-tests.el (fns--take-ntake): Add test cases.
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; |