diff options
| author | Po Lu | 2023-03-12 10:37:18 +0800 |
|---|---|---|
| committer | Po Lu | 2023-03-12 10:37:18 +0800 |
| commit | 6c68d9bd3a18c74384fc764179fd92a024d6c35d (patch) | |
| tree | 4ab812fdff3d0909ca84fa592da8f4d4a135bf90 /src | |
| parent | b83324d1bd5fcab98c6fed71f65424f7017a9a82 (diff) | |
| download | emacs-6c68d9bd3a18c74384fc764179fd92a024d6c35d.tar.gz emacs-6c68d9bd3a18c74384fc764179fd92a024d6c35d.zip | |
Clean up emacs-module.c
* src/emacs-module.c (MODULE_HANDLE_NONLOCAL_EXIT)
(module_make_global_ref, module_free_global_ref)
(module_make_function, module_get_function_finalizer)
(module_set_function_finalizer, module_make_interactive)
(module_funcall, module_intern, module_type_of)
(module_extract_integer, module_make_integer, module_extract_float)
(module_make_float, module_copy_string_contents)
(module_make_string, module_make_unibyte_string)
(module_make_user_ptr, module_get_user_ptr, module_set_user_ptr)
(module_get_user_finalizer, module_set_user_finalizer)
(module_vec_set, module_vec_get, module_vec_size)
(module_process_input, module_extract_time, module_make_time)
(module_extract_big_integer, module_make_big_integer)
(module_open_channel, module_reset_handlerlist): Adjust as
recommended by Paul Eggert <eggert@cs.ucla.edu>.
Diffstat (limited to 'src')
| -rw-r--r-- | src/emacs-module.c | 93 |
1 files changed, 47 insertions, 46 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c index 4719b15c992..133a06f35b7 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c | |||
| @@ -206,7 +206,7 @@ static void module_non_local_exit_signal_1 (emacs_env *, | |||
| 206 | static void module_non_local_exit_throw_1 (emacs_env *, | 206 | static void module_non_local_exit_throw_1 (emacs_env *, |
| 207 | Lisp_Object, Lisp_Object); | 207 | Lisp_Object, Lisp_Object); |
| 208 | static void module_out_of_memory (emacs_env *); | 208 | static void module_out_of_memory (emacs_env *); |
| 209 | static void module_reset_handlerlist (struct handler **); | 209 | static void module_reset_handlerlist (struct handler *); |
| 210 | static bool value_storage_contains_p (const struct emacs_value_storage *, | 210 | static bool value_storage_contains_p (const struct emacs_value_storage *, |
| 211 | emacs_value, ptrdiff_t *); | 211 | emacs_value, ptrdiff_t *); |
| 212 | 212 | ||
| @@ -280,13 +280,13 @@ module_decode_utf_8 (const char *str, ptrdiff_t len) | |||
| 280 | module_handle_nonlocal_exit (env, \ | 280 | module_handle_nonlocal_exit (env, \ |
| 281 | internal_cleanup->nonlocal_exit, \ | 281 | internal_cleanup->nonlocal_exit, \ |
| 282 | internal_cleanup->val); \ | 282 | internal_cleanup->val); \ |
| 283 | module_reset_handlerlist (&internal_cleanup); \ | 283 | module_reset_handlerlist (internal_cleanup); \ |
| 284 | return retval; \ | 284 | return retval; \ |
| 285 | } \ | 285 | } \ |
| 286 | do { } while (false) | 286 | do { } while (false) |
| 287 | 287 | ||
| 288 | #define MODULE_INTERNAL_CLEANUP \ | 288 | #define MODULE_INTERNAL_CLEANUP() \ |
| 289 | module_reset_handlerlist (&internal_cleanup) | 289 | module_reset_handlerlist (internal_cleanup) |
| 290 | 290 | ||
| 291 | 291 | ||
| 292 | /* Implementation of runtime and environment functions. | 292 | /* Implementation of runtime and environment functions. |
| @@ -440,7 +440,7 @@ module_make_global_ref (emacs_env *env, emacs_value value) | |||
| 440 | bool overflow = INT_ADD_WRAPV (ref->refcount, 1, &ref->refcount); | 440 | bool overflow = INT_ADD_WRAPV (ref->refcount, 1, &ref->refcount); |
| 441 | if (overflow) | 441 | if (overflow) |
| 442 | overflow_error (); | 442 | overflow_error (); |
| 443 | MODULE_INTERNAL_CLEANUP; | 443 | MODULE_INTERNAL_CLEANUP (); |
| 444 | return &ref->value; | 444 | return &ref->value; |
| 445 | } | 445 | } |
| 446 | else | 446 | else |
| @@ -453,7 +453,7 @@ module_make_global_ref (emacs_env *env, emacs_value value) | |||
| 453 | Lisp_Object value; | 453 | Lisp_Object value; |
| 454 | XSETPSEUDOVECTOR (value, ref, PVEC_OTHER); | 454 | XSETPSEUDOVECTOR (value, ref, PVEC_OTHER); |
| 455 | hash_put (h, new_obj, value, hashcode); | 455 | hash_put (h, new_obj, value, hashcode); |
| 456 | MODULE_INTERNAL_CLEANUP; | 456 | MODULE_INTERNAL_CLEANUP (); |
| 457 | return &ref->value; | 457 | return &ref->value; |
| 458 | } | 458 | } |
| 459 | } | 459 | } |
| @@ -486,7 +486,7 @@ module_free_global_ref (emacs_env *env, emacs_value global_value) | |||
| 486 | hash_remove_from_table (h, obj); | 486 | hash_remove_from_table (h, obj); |
| 487 | } | 487 | } |
| 488 | 488 | ||
| 489 | MODULE_INTERNAL_CLEANUP; | 489 | MODULE_INTERNAL_CLEANUP (); |
| 490 | } | 490 | } |
| 491 | 491 | ||
| 492 | static enum emacs_funcall_exit | 492 | static enum emacs_funcall_exit |
| @@ -607,7 +607,7 @@ module_make_function (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity, | |||
| 607 | eassert (MODULE_FUNCTIONP (result)); | 607 | eassert (MODULE_FUNCTIONP (result)); |
| 608 | 608 | ||
| 609 | value = lisp_to_value (env, result); | 609 | value = lisp_to_value (env, result); |
| 610 | MODULE_INTERNAL_CLEANUP; | 610 | MODULE_INTERNAL_CLEANUP (); |
| 611 | return value; | 611 | return value; |
| 612 | } | 612 | } |
| 613 | 613 | ||
| @@ -617,7 +617,7 @@ module_get_function_finalizer (emacs_env *env, emacs_value arg) | |||
| 617 | MODULE_FUNCTION_BEGIN (NULL); | 617 | MODULE_FUNCTION_BEGIN (NULL); |
| 618 | Lisp_Object lisp = value_to_lisp (arg); | 618 | Lisp_Object lisp = value_to_lisp (arg); |
| 619 | CHECK_MODULE_FUNCTION (lisp); | 619 | CHECK_MODULE_FUNCTION (lisp); |
| 620 | MODULE_INTERNAL_CLEANUP; | 620 | MODULE_INTERNAL_CLEANUP (); |
| 621 | return XMODULE_FUNCTION (lisp)->finalizer; | 621 | return XMODULE_FUNCTION (lisp)->finalizer; |
| 622 | } | 622 | } |
| 623 | 623 | ||
| @@ -629,7 +629,7 @@ module_set_function_finalizer (emacs_env *env, emacs_value arg, | |||
| 629 | Lisp_Object lisp = value_to_lisp (arg); | 629 | Lisp_Object lisp = value_to_lisp (arg); |
| 630 | CHECK_MODULE_FUNCTION (lisp); | 630 | CHECK_MODULE_FUNCTION (lisp); |
| 631 | XMODULE_FUNCTION (lisp)->finalizer = fin; | 631 | XMODULE_FUNCTION (lisp)->finalizer = fin; |
| 632 | MODULE_INTERNAL_CLEANUP; | 632 | MODULE_INTERNAL_CLEANUP (); |
| 633 | } | 633 | } |
| 634 | 634 | ||
| 635 | void | 635 | void |
| @@ -649,7 +649,7 @@ module_make_interactive (emacs_env *env, emacs_value function, emacs_value spec) | |||
| 649 | /* Normalize (interactive nil) to (interactive). */ | 649 | /* Normalize (interactive nil) to (interactive). */ |
| 650 | XMODULE_FUNCTION (lisp_fun)->interactive_form | 650 | XMODULE_FUNCTION (lisp_fun)->interactive_form |
| 651 | = NILP (lisp_spec) ? list1 (Qinteractive) : list2 (Qinteractive, lisp_spec); | 651 | = NILP (lisp_spec) ? list1 (Qinteractive) : list2 (Qinteractive, lisp_spec); |
| 652 | MODULE_INTERNAL_CLEANUP; | 652 | MODULE_INTERNAL_CLEANUP (); |
| 653 | } | 653 | } |
| 654 | 654 | ||
| 655 | Lisp_Object | 655 | Lisp_Object |
| @@ -683,7 +683,7 @@ module_funcall (emacs_env *env, emacs_value func, ptrdiff_t nargs, | |||
| 683 | newargs[1 + i] = value_to_lisp (args[i]); | 683 | newargs[1 + i] = value_to_lisp (args[i]); |
| 684 | emacs_value result = lisp_to_value (env, Ffuncall (nargs1, newargs)); | 684 | emacs_value result = lisp_to_value (env, Ffuncall (nargs1, newargs)); |
| 685 | SAFE_FREE (); | 685 | SAFE_FREE (); |
| 686 | MODULE_INTERNAL_CLEANUP; | 686 | MODULE_INTERNAL_CLEANUP (); |
| 687 | return result; | 687 | return result; |
| 688 | } | 688 | } |
| 689 | 689 | ||
| @@ -694,7 +694,7 @@ module_intern (emacs_env *env, const char *name) | |||
| 694 | 694 | ||
| 695 | MODULE_FUNCTION_BEGIN (NULL); | 695 | MODULE_FUNCTION_BEGIN (NULL); |
| 696 | tem = lisp_to_value (env, intern (name)); | 696 | tem = lisp_to_value (env, intern (name)); |
| 697 | MODULE_INTERNAL_CLEANUP; | 697 | MODULE_INTERNAL_CLEANUP (); |
| 698 | return tem; | 698 | return tem; |
| 699 | } | 699 | } |
| 700 | 700 | ||
| @@ -705,7 +705,7 @@ module_type_of (emacs_env *env, emacs_value arg) | |||
| 705 | 705 | ||
| 706 | MODULE_FUNCTION_BEGIN (NULL); | 706 | MODULE_FUNCTION_BEGIN (NULL); |
| 707 | tem = lisp_to_value (env, Ftype_of (value_to_lisp (arg))); | 707 | tem = lisp_to_value (env, Ftype_of (value_to_lisp (arg))); |
| 708 | MODULE_INTERNAL_CLEANUP; | 708 | MODULE_INTERNAL_CLEANUP (); |
| 709 | return tem; | 709 | return tem; |
| 710 | } | 710 | } |
| 711 | 711 | ||
| @@ -732,7 +732,7 @@ module_extract_integer (emacs_env *env, emacs_value arg) | |||
| 732 | intmax_t i; | 732 | intmax_t i; |
| 733 | if (! integer_to_intmax (lisp, &i)) | 733 | if (! integer_to_intmax (lisp, &i)) |
| 734 | xsignal1 (Qoverflow_error, lisp); | 734 | xsignal1 (Qoverflow_error, lisp); |
| 735 | MODULE_INTERNAL_CLEANUP; | 735 | MODULE_INTERNAL_CLEANUP (); |
| 736 | return i; | 736 | return i; |
| 737 | } | 737 | } |
| 738 | 738 | ||
| @@ -743,7 +743,7 @@ module_make_integer (emacs_env *env, intmax_t n) | |||
| 743 | 743 | ||
| 744 | MODULE_FUNCTION_BEGIN (NULL); | 744 | MODULE_FUNCTION_BEGIN (NULL); |
| 745 | value = lisp_to_value (env, make_int (n)); | 745 | value = lisp_to_value (env, make_int (n)); |
| 746 | MODULE_INTERNAL_CLEANUP; | 746 | MODULE_INTERNAL_CLEANUP (); |
| 747 | 747 | ||
| 748 | return value; | 748 | return value; |
| 749 | } | 749 | } |
| @@ -754,7 +754,7 @@ module_extract_float (emacs_env *env, emacs_value arg) | |||
| 754 | MODULE_FUNCTION_BEGIN (0); | 754 | MODULE_FUNCTION_BEGIN (0); |
| 755 | Lisp_Object lisp = value_to_lisp (arg); | 755 | Lisp_Object lisp = value_to_lisp (arg); |
| 756 | CHECK_TYPE (FLOATP (lisp), Qfloatp, lisp); | 756 | CHECK_TYPE (FLOATP (lisp), Qfloatp, lisp); |
| 757 | MODULE_INTERNAL_CLEANUP; | 757 | MODULE_INTERNAL_CLEANUP (); |
| 758 | 758 | ||
| 759 | return XFLOAT_DATA (lisp); | 759 | return XFLOAT_DATA (lisp); |
| 760 | } | 760 | } |
| @@ -766,7 +766,7 @@ module_make_float (emacs_env *env, double d) | |||
| 766 | 766 | ||
| 767 | MODULE_FUNCTION_BEGIN (NULL); | 767 | MODULE_FUNCTION_BEGIN (NULL); |
| 768 | value = lisp_to_value (env, make_float (d)); | 768 | value = lisp_to_value (env, make_float (d)); |
| 769 | MODULE_INTERNAL_CLEANUP; | 769 | MODULE_INTERNAL_CLEANUP (); |
| 770 | 770 | ||
| 771 | return value; | 771 | return value; |
| 772 | } | 772 | } |
| @@ -800,7 +800,7 @@ module_copy_string_contents (emacs_env *env, emacs_value value, char *buf, | |||
| 800 | if (buf == NULL) | 800 | if (buf == NULL) |
| 801 | { | 801 | { |
| 802 | *len = required_buf_size; | 802 | *len = required_buf_size; |
| 803 | MODULE_INTERNAL_CLEANUP; | 803 | MODULE_INTERNAL_CLEANUP (); |
| 804 | return true; | 804 | return true; |
| 805 | } | 805 | } |
| 806 | 806 | ||
| @@ -816,7 +816,7 @@ module_copy_string_contents (emacs_env *env, emacs_value value, char *buf, | |||
| 816 | *len = required_buf_size; | 816 | *len = required_buf_size; |
| 817 | memcpy (buf, SDATA (lisp_str_utf8), raw_size + 1); | 817 | memcpy (buf, SDATA (lisp_str_utf8), raw_size + 1); |
| 818 | 818 | ||
| 819 | MODULE_INTERNAL_CLEANUP; | 819 | MODULE_INTERNAL_CLEANUP (); |
| 820 | return true; | 820 | return true; |
| 821 | } | 821 | } |
| 822 | 822 | ||
| @@ -831,7 +831,7 @@ module_make_string (emacs_env *env, const char *str, ptrdiff_t len) | |||
| 831 | Lisp_Object lstr | 831 | Lisp_Object lstr |
| 832 | = len == 0 ? empty_multibyte_string : module_decode_utf_8 (str, len); | 832 | = len == 0 ? empty_multibyte_string : module_decode_utf_8 (str, len); |
| 833 | value = lisp_to_value (env, lstr); | 833 | value = lisp_to_value (env, lstr); |
| 834 | MODULE_INTERNAL_CLEANUP; | 834 | MODULE_INTERNAL_CLEANUP (); |
| 835 | return value; | 835 | return value; |
| 836 | } | 836 | } |
| 837 | 837 | ||
| @@ -846,7 +846,7 @@ module_make_unibyte_string (emacs_env *env, const char *str, ptrdiff_t length) | |||
| 846 | Lisp_Object lstr | 846 | Lisp_Object lstr |
| 847 | = length == 0 ? empty_unibyte_string : make_unibyte_string (str, length); | 847 | = length == 0 ? empty_unibyte_string : make_unibyte_string (str, length); |
| 848 | value = lisp_to_value (env, lstr); | 848 | value = lisp_to_value (env, lstr); |
| 849 | MODULE_INTERNAL_CLEANUP; | 849 | MODULE_INTERNAL_CLEANUP (); |
| 850 | 850 | ||
| 851 | return value; | 851 | return value; |
| 852 | } | 852 | } |
| @@ -858,7 +858,7 @@ module_make_user_ptr (emacs_env *env, emacs_finalizer fin, void *ptr) | |||
| 858 | 858 | ||
| 859 | MODULE_FUNCTION_BEGIN (NULL); | 859 | MODULE_FUNCTION_BEGIN (NULL); |
| 860 | value = lisp_to_value (env, make_user_ptr (fin, ptr)); | 860 | value = lisp_to_value (env, make_user_ptr (fin, ptr)); |
| 861 | MODULE_INTERNAL_CLEANUP; | 861 | MODULE_INTERNAL_CLEANUP (); |
| 862 | 862 | ||
| 863 | return value; | 863 | return value; |
| 864 | } | 864 | } |
| @@ -869,7 +869,7 @@ module_get_user_ptr (emacs_env *env, emacs_value arg) | |||
| 869 | MODULE_FUNCTION_BEGIN (NULL); | 869 | MODULE_FUNCTION_BEGIN (NULL); |
| 870 | Lisp_Object lisp = value_to_lisp (arg); | 870 | Lisp_Object lisp = value_to_lisp (arg); |
| 871 | CHECK_USER_PTR (lisp); | 871 | CHECK_USER_PTR (lisp); |
| 872 | MODULE_INTERNAL_CLEANUP; | 872 | MODULE_INTERNAL_CLEANUP (); |
| 873 | 873 | ||
| 874 | return XUSER_PTR (lisp)->p; | 874 | return XUSER_PTR (lisp)->p; |
| 875 | } | 875 | } |
| @@ -881,7 +881,7 @@ module_set_user_ptr (emacs_env *env, emacs_value arg, void *ptr) | |||
| 881 | Lisp_Object lisp = value_to_lisp (arg); | 881 | Lisp_Object lisp = value_to_lisp (arg); |
| 882 | CHECK_USER_PTR (lisp); | 882 | CHECK_USER_PTR (lisp); |
| 883 | XUSER_PTR (lisp)->p = ptr; | 883 | XUSER_PTR (lisp)->p = ptr; |
| 884 | MODULE_INTERNAL_CLEANUP; | 884 | MODULE_INTERNAL_CLEANUP (); |
| 885 | } | 885 | } |
| 886 | 886 | ||
| 887 | static emacs_finalizer | 887 | static emacs_finalizer |
| @@ -890,7 +890,7 @@ module_get_user_finalizer (emacs_env *env, emacs_value arg) | |||
| 890 | MODULE_FUNCTION_BEGIN (NULL); | 890 | MODULE_FUNCTION_BEGIN (NULL); |
| 891 | Lisp_Object lisp = value_to_lisp (arg); | 891 | Lisp_Object lisp = value_to_lisp (arg); |
| 892 | CHECK_USER_PTR (lisp); | 892 | CHECK_USER_PTR (lisp); |
| 893 | MODULE_INTERNAL_CLEANUP; | 893 | MODULE_INTERNAL_CLEANUP (); |
| 894 | return XUSER_PTR (lisp)->finalizer; | 894 | return XUSER_PTR (lisp)->finalizer; |
| 895 | } | 895 | } |
| 896 | 896 | ||
| @@ -902,7 +902,7 @@ module_set_user_finalizer (emacs_env *env, emacs_value arg, | |||
| 902 | Lisp_Object lisp = value_to_lisp (arg); | 902 | Lisp_Object lisp = value_to_lisp (arg); |
| 903 | CHECK_USER_PTR (lisp); | 903 | CHECK_USER_PTR (lisp); |
| 904 | XUSER_PTR (lisp)->finalizer = fin; | 904 | XUSER_PTR (lisp)->finalizer = fin; |
| 905 | MODULE_INTERNAL_CLEANUP; | 905 | MODULE_INTERNAL_CLEANUP (); |
| 906 | } | 906 | } |
| 907 | 907 | ||
| 908 | static void | 908 | static void |
| @@ -922,7 +922,7 @@ module_vec_set (emacs_env *env, emacs_value vector, ptrdiff_t index, | |||
| 922 | Lisp_Object lisp = value_to_lisp (vector); | 922 | Lisp_Object lisp = value_to_lisp (vector); |
| 923 | check_vec_index (lisp, index); | 923 | check_vec_index (lisp, index); |
| 924 | ASET (lisp, index, value_to_lisp (value)); | 924 | ASET (lisp, index, value_to_lisp (value)); |
| 925 | MODULE_INTERNAL_CLEANUP; | 925 | MODULE_INTERNAL_CLEANUP (); |
| 926 | } | 926 | } |
| 927 | 927 | ||
| 928 | static emacs_value | 928 | static emacs_value |
| @@ -934,7 +934,7 @@ module_vec_get (emacs_env *env, emacs_value vector, ptrdiff_t index) | |||
| 934 | Lisp_Object lisp = value_to_lisp (vector); | 934 | Lisp_Object lisp = value_to_lisp (vector); |
| 935 | check_vec_index (lisp, index); | 935 | check_vec_index (lisp, index); |
| 936 | value = lisp_to_value (env, AREF (lisp, index)); | 936 | value = lisp_to_value (env, AREF (lisp, index)); |
| 937 | MODULE_INTERNAL_CLEANUP; | 937 | MODULE_INTERNAL_CLEANUP (); |
| 938 | 938 | ||
| 939 | return value; | 939 | return value; |
| 940 | } | 940 | } |
| @@ -945,7 +945,7 @@ module_vec_size (emacs_env *env, emacs_value vector) | |||
| 945 | MODULE_FUNCTION_BEGIN (0); | 945 | MODULE_FUNCTION_BEGIN (0); |
| 946 | Lisp_Object lisp = value_to_lisp (vector); | 946 | Lisp_Object lisp = value_to_lisp (vector); |
| 947 | CHECK_VECTOR (lisp); | 947 | CHECK_VECTOR (lisp); |
| 948 | MODULE_INTERNAL_CLEANUP; | 948 | MODULE_INTERNAL_CLEANUP (); |
| 949 | 949 | ||
| 950 | return ASIZE (lisp); | 950 | return ASIZE (lisp); |
| 951 | } | 951 | } |
| @@ -967,7 +967,7 @@ module_process_input (emacs_env *env) | |||
| 967 | MODULE_FUNCTION_BEGIN (emacs_process_input_quit); | 967 | MODULE_FUNCTION_BEGIN (emacs_process_input_quit); |
| 968 | maybe_quit (); | 968 | maybe_quit (); |
| 969 | rc = emacs_process_input_continue; | 969 | rc = emacs_process_input_continue; |
| 970 | MODULE_INTERNAL_CLEANUP; | 970 | MODULE_INTERNAL_CLEANUP (); |
| 971 | return rc; | 971 | return rc; |
| 972 | } | 972 | } |
| 973 | 973 | ||
| @@ -978,7 +978,7 @@ module_extract_time (emacs_env *env, emacs_value arg) | |||
| 978 | 978 | ||
| 979 | MODULE_FUNCTION_BEGIN ((struct timespec) {0}); | 979 | MODULE_FUNCTION_BEGIN ((struct timespec) {0}); |
| 980 | value = lisp_time_argument (value_to_lisp (arg)); | 980 | value = lisp_time_argument (value_to_lisp (arg)); |
| 981 | MODULE_INTERNAL_CLEANUP; | 981 | MODULE_INTERNAL_CLEANUP (); |
| 982 | 982 | ||
| 983 | return value; | 983 | return value; |
| 984 | } | 984 | } |
| @@ -990,7 +990,7 @@ module_make_time (emacs_env *env, struct timespec time) | |||
| 990 | 990 | ||
| 991 | MODULE_FUNCTION_BEGIN (NULL); | 991 | MODULE_FUNCTION_BEGIN (NULL); |
| 992 | value = lisp_to_value (env, timespec_to_lisp (time)); | 992 | value = lisp_to_value (env, timespec_to_lisp (time)); |
| 993 | MODULE_INTERNAL_CLEANUP; | 993 | MODULE_INTERNAL_CLEANUP (); |
| 994 | 994 | ||
| 995 | return value; | 995 | return value; |
| 996 | } | 996 | } |
| @@ -1070,7 +1070,7 @@ module_extract_big_integer (emacs_env *env, emacs_value arg, int *sign, | |||
| 1070 | *sign = (0 < x) - (x < 0); | 1070 | *sign = (0 < x) - (x < 0); |
| 1071 | if (x == 0 || count == NULL) | 1071 | if (x == 0 || count == NULL) |
| 1072 | { | 1072 | { |
| 1073 | MODULE_INTERNAL_CLEANUP; | 1073 | MODULE_INTERNAL_CLEANUP (); |
| 1074 | return true; | 1074 | return true; |
| 1075 | } | 1075 | } |
| 1076 | /* As a simplification we don't check how many array elements | 1076 | /* As a simplification we don't check how many array elements |
| @@ -1083,7 +1083,7 @@ module_extract_big_integer (emacs_env *env, emacs_value arg, int *sign, | |||
| 1083 | if (magnitude == NULL) | 1083 | if (magnitude == NULL) |
| 1084 | { | 1084 | { |
| 1085 | *count = required; | 1085 | *count = required; |
| 1086 | MODULE_INTERNAL_CLEANUP; | 1086 | MODULE_INTERNAL_CLEANUP (); |
| 1087 | return true; | 1087 | return true; |
| 1088 | } | 1088 | } |
| 1089 | if (*count < required) | 1089 | if (*count < required) |
| @@ -1102,14 +1102,14 @@ module_extract_big_integer (emacs_env *env, emacs_value arg, int *sign, | |||
| 1102 | verify (required * bits < PTRDIFF_MAX); | 1102 | verify (required * bits < PTRDIFF_MAX); |
| 1103 | for (ptrdiff_t i = 0; i < required; ++i) | 1103 | for (ptrdiff_t i = 0; i < required; ++i) |
| 1104 | magnitude[i] = (emacs_limb_t) (u >> (i * bits)); | 1104 | magnitude[i] = (emacs_limb_t) (u >> (i * bits)); |
| 1105 | MODULE_INTERNAL_CLEANUP; | 1105 | MODULE_INTERNAL_CLEANUP (); |
| 1106 | return true; | 1106 | return true; |
| 1107 | } | 1107 | } |
| 1108 | const mpz_t *x = xbignum_val (o); | 1108 | const mpz_t *x = xbignum_val (o); |
| 1109 | *sign = mpz_sgn (*x); | 1109 | *sign = mpz_sgn (*x); |
| 1110 | if (count == NULL) | 1110 | if (count == NULL) |
| 1111 | { | 1111 | { |
| 1112 | MODULE_INTERNAL_CLEANUP; | 1112 | MODULE_INTERNAL_CLEANUP (); |
| 1113 | return true; | 1113 | return true; |
| 1114 | } | 1114 | } |
| 1115 | size_t required_size = (mpz_sizeinbase (*x, 2) + numb - 1) / numb; | 1115 | size_t required_size = (mpz_sizeinbase (*x, 2) + numb - 1) / numb; |
| @@ -1119,7 +1119,7 @@ module_extract_big_integer (emacs_env *env, emacs_value arg, int *sign, | |||
| 1119 | if (magnitude == NULL) | 1119 | if (magnitude == NULL) |
| 1120 | { | 1120 | { |
| 1121 | *count = required; | 1121 | *count = required; |
| 1122 | MODULE_INTERNAL_CLEANUP; | 1122 | MODULE_INTERNAL_CLEANUP (); |
| 1123 | return true; | 1123 | return true; |
| 1124 | } | 1124 | } |
| 1125 | if (*count < required) | 1125 | if (*count < required) |
| @@ -1132,7 +1132,7 @@ module_extract_big_integer (emacs_env *env, emacs_value arg, int *sign, | |||
| 1132 | size_t written; | 1132 | size_t written; |
| 1133 | mpz_export (magnitude, &written, order, size, endian, nails, *x); | 1133 | mpz_export (magnitude, &written, order, size, endian, nails, *x); |
| 1134 | eassert (written == required_size); | 1134 | eassert (written == required_size); |
| 1135 | MODULE_INTERNAL_CLEANUP; | 1135 | MODULE_INTERNAL_CLEANUP (); |
| 1136 | return true; | 1136 | return true; |
| 1137 | } | 1137 | } |
| 1138 | 1138 | ||
| @@ -1146,7 +1146,7 @@ module_make_big_integer (emacs_env *env, int sign, | |||
| 1146 | if (sign == 0) | 1146 | if (sign == 0) |
| 1147 | { | 1147 | { |
| 1148 | value = lisp_to_value (env, make_fixed_natnum (0)); | 1148 | value = lisp_to_value (env, make_fixed_natnum (0)); |
| 1149 | MODULE_INTERNAL_CLEANUP; | 1149 | MODULE_INTERNAL_CLEANUP (); |
| 1150 | return value; | 1150 | return value; |
| 1151 | } | 1151 | } |
| 1152 | enum { order = -1, size = sizeof *magnitude, endian = 0, nails = 0 }; | 1152 | enum { order = -1, size = sizeof *magnitude, endian = 0, nails = 0 }; |
| @@ -1154,7 +1154,7 @@ module_make_big_integer (emacs_env *env, int sign, | |||
| 1154 | if (sign < 0) | 1154 | if (sign < 0) |
| 1155 | mpz_neg (mpz[0], mpz[0]); | 1155 | mpz_neg (mpz[0], mpz[0]); |
| 1156 | value = lisp_to_value (env, make_integer_mpz ()); | 1156 | value = lisp_to_value (env, make_integer_mpz ()); |
| 1157 | MODULE_INTERNAL_CLEANUP; | 1157 | MODULE_INTERNAL_CLEANUP (); |
| 1158 | return value; | 1158 | return value; |
| 1159 | } | 1159 | } |
| 1160 | 1160 | ||
| @@ -1165,7 +1165,7 @@ module_open_channel (emacs_env *env, emacs_value pipe_process) | |||
| 1165 | 1165 | ||
| 1166 | MODULE_FUNCTION_BEGIN (-1); | 1166 | MODULE_FUNCTION_BEGIN (-1); |
| 1167 | rc = open_channel_for_module (value_to_lisp (pipe_process)); | 1167 | rc = open_channel_for_module (value_to_lisp (pipe_process)); |
| 1168 | MODULE_INTERNAL_CLEANUP; | 1168 | MODULE_INTERNAL_CLEANUP (); |
| 1169 | 1169 | ||
| 1170 | return rc; | 1170 | return rc; |
| 1171 | } | 1171 | } |
| @@ -1620,12 +1620,13 @@ finalize_runtime_unwind (void *raw_ert) | |||
| 1620 | /* Must be called after setting up a handler immediately before | 1620 | /* Must be called after setting up a handler immediately before |
| 1621 | returning from the function. See the comments in lisp.h and the | 1621 | returning from the function. See the comments in lisp.h and the |
| 1622 | code in eval.c for details. The macros below arrange for this | 1622 | code in eval.c for details. The macros below arrange for this |
| 1623 | function to be called automatically. PHANDLERLIST points to a word | 1623 | function to be called automatically. HANDLERLIST points to the |
| 1624 | containing the handler list, for sanity checking. */ | 1624 | handler list. */ |
| 1625 | |||
| 1625 | static void | 1626 | static void |
| 1626 | module_reset_handlerlist (struct handler **phandlerlist) | 1627 | module_reset_handlerlist (struct handler *handlerlist) |
| 1627 | { | 1628 | { |
| 1628 | eassert (handlerlist == *phandlerlist); | 1629 | eassert (handlerlist == handlerlist); |
| 1629 | handlerlist = handlerlist->next; | 1630 | handlerlist = handlerlist->next; |
| 1630 | } | 1631 | } |
| 1631 | 1632 | ||