diff options
| author | Paul Eggert | 2020-04-17 14:09:01 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-04-17 14:11:30 -0700 |
| commit | 2cb7e8669c3cdd0f7f0687e01810a3160d6b5c5b (patch) | |
| tree | 21fd3ca5914224a2478d7c528e68d0ca64ceddc1 /src/fns.c | |
| parent | fadfde5fdf2fd8fc3b3b4ba430a954a89d0cd1fe (diff) | |
| download | emacs-2cb7e8669c3cdd0f7f0687e01810a3160d6b5c5b.tar.gz emacs-2cb7e8669c3cdd0f7f0687e01810a3160d6b5c5b.zip | |
Port recent character.h changes to --with-wide-int
* src/fns.c (mapcar1):
* src/keymap.c (Fkey_description):
* src/syntax.c (scan_lists):
Prefer ptrdiff_t to EMACS_INT where either will do; this fixes
newly-introduced type errors on --with-wide-int platforms where
ptrdiff_t is narrower than EMACS_INT.
* src/keymap.c (Fkey_description): Rework for clarity; remove goto.
* src/syntax.c (scan_words, Fforward_comment, scan_lists)):
Fix unlikely integer overflow problems that can occur on
--with-wide-int platforms, and that were caught by the recent
character.h changes.
Diffstat (limited to 'src/fns.c')
| -rw-r--r-- | src/fns.c | 24 |
1 files changed, 10 insertions, 14 deletions
| @@ -2600,49 +2600,45 @@ usage: (nconc &rest LISTS) */) | |||
| 2600 | static EMACS_INT | 2600 | static EMACS_INT |
| 2601 | mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq) | 2601 | mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq) |
| 2602 | { | 2602 | { |
| 2603 | Lisp_Object tail, dummy; | ||
| 2604 | EMACS_INT i; | ||
| 2605 | |||
| 2606 | if (VECTORP (seq) || COMPILEDP (seq)) | 2603 | if (VECTORP (seq) || COMPILEDP (seq)) |
| 2607 | { | 2604 | { |
| 2608 | for (i = 0; i < leni; i++) | 2605 | for (ptrdiff_t i = 0; i < leni; i++) |
| 2609 | { | 2606 | { |
| 2610 | dummy = call1 (fn, AREF (seq, i)); | 2607 | Lisp_Object dummy = call1 (fn, AREF (seq, i)); |
| 2611 | if (vals) | 2608 | if (vals) |
| 2612 | vals[i] = dummy; | 2609 | vals[i] = dummy; |
| 2613 | } | 2610 | } |
| 2614 | } | 2611 | } |
| 2615 | else if (BOOL_VECTOR_P (seq)) | 2612 | else if (BOOL_VECTOR_P (seq)) |
| 2616 | { | 2613 | { |
| 2617 | for (i = 0; i < leni; i++) | 2614 | for (EMACS_INT i = 0; i < leni; i++) |
| 2618 | { | 2615 | { |
| 2619 | dummy = call1 (fn, bool_vector_ref (seq, i)); | 2616 | Lisp_Object dummy = call1 (fn, bool_vector_ref (seq, i)); |
| 2620 | if (vals) | 2617 | if (vals) |
| 2621 | vals[i] = dummy; | 2618 | vals[i] = dummy; |
| 2622 | } | 2619 | } |
| 2623 | } | 2620 | } |
| 2624 | else if (STRINGP (seq)) | 2621 | else if (STRINGP (seq)) |
| 2625 | { | 2622 | { |
| 2626 | ptrdiff_t i_byte; | 2623 | ptrdiff_t i_byte = 0; |
| 2627 | 2624 | ||
| 2628 | for (i = 0, i_byte = 0; i < leni;) | 2625 | for (ptrdiff_t i = 0; i < leni;) |
| 2629 | { | 2626 | { |
| 2630 | ptrdiff_t i_before = i; | 2627 | ptrdiff_t i_before = i; |
| 2631 | int c = fetch_string_char_advance (seq, &i, &i_byte); | 2628 | int c = fetch_string_char_advance (seq, &i, &i_byte); |
| 2632 | XSETFASTINT (dummy, c); | 2629 | Lisp_Object dummy = call1 (fn, make_fixnum (c)); |
| 2633 | dummy = call1 (fn, dummy); | ||
| 2634 | if (vals) | 2630 | if (vals) |
| 2635 | vals[i_before] = dummy; | 2631 | vals[i_before] = dummy; |
| 2636 | } | 2632 | } |
| 2637 | } | 2633 | } |
| 2638 | else /* Must be a list, since Flength did not get an error */ | 2634 | else /* Must be a list, since Flength did not get an error */ |
| 2639 | { | 2635 | { |
| 2640 | tail = seq; | 2636 | Lisp_Object tail = seq; |
| 2641 | for (i = 0; i < leni; i++) | 2637 | for (ptrdiff_t i = 0; i < leni; i++) |
| 2642 | { | 2638 | { |
| 2643 | if (! CONSP (tail)) | 2639 | if (! CONSP (tail)) |
| 2644 | return i; | 2640 | return i; |
| 2645 | dummy = call1 (fn, XCAR (tail)); | 2641 | Lisp_Object dummy = call1 (fn, XCAR (tail)); |
| 2646 | if (vals) | 2642 | if (vals) |
| 2647 | vals[i] = dummy; | 2643 | vals[i] = dummy; |
| 2648 | tail = XCDR (tail); | 2644 | tail = XCDR (tail); |