aboutsummaryrefslogtreecommitdiffstats
path: root/src/insdel.c
diff options
context:
space:
mode:
authorPaul Eggert2011-09-21 10:41:20 -0700
committerPaul Eggert2011-09-21 10:41:20 -0700
commitd311d28c3f8a3c43e6ef33d68b852c5ea7f13239 (patch)
tree84b390c8bd472074294a31d51e790437f0a9a75d /src/insdel.c
parent4768be09c9866add356a0a9b47ecd42346442b9f (diff)
downloademacs-d311d28c3f8a3c43e6ef33d68b852c5ea7f13239.tar.gz
emacs-d311d28c3f8a3c43e6ef33d68b852c5ea7f13239.zip
* alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
(allocate_vectorlike, buffer_memory_full, struct sdata, SDATA_SIZE) (string_bytes, check_sblock, allocate_string_data): (compact_small_strings, Fmake_bool_vector, make_string) (make_unibyte_string, make_multibyte_string) (make_string_from_bytes, make_specified_string) (allocate_vectorlike, Fmake_vector, find_string_data_in_pure) (make_pure_string, make_pure_c_string, make_pure_vector, Fpurecopy) (mark_vectorlike): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (allocate_pseudovector): Use int, not EMACS_INT, where int is wide enough. (inhibit_garbage_collection, Fgarbage_collect): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * bidi.c (bidi_mirror_char): Use EMACS_INT, not int, where int might not be wide enough. (bidi_cache_search, bidi_cache_find, bidi_init_it) (bidi_count_bytes, bidi_char_at_pos, bidi_fetch_char) (bidi_at_paragraph_end, bidi_find_paragraph_start) (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak) (bidi_level_of_next_char, bidi_move_to_visually_next): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * buffer.c (copy_overlays, Fgenerate_new_buffer_name) (Fkill_buffer, Fset_buffer_major_mode) (advance_to_char_boundary, Fbuffer_swap_text) (Fset_buffer_multibyte, overlays_at, overlays_in) (overlay_touches_p, struct sortvec, record_overlay_string) (overlay_strings, recenter_overlay_lists) (adjust_overlays_for_insert, adjust_overlays_for_delete) (fix_start_end_in_overlays, fix_overlays_before, modify_overlay) (Fmove_overlay, Fnext_overlay_change, Fprevious_overlay_change) (Foverlay_recenter, last_overlay_modification_hooks_used) (report_overlay_modification, evaporate_overlays, enlarge_buffer_text): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (validate_region): Omit unnecessary test for b <= e, since that's guaranteed by the previous test. (adjust_overlays_for_delete): Avoid pos + length overflow. (Fmove_overlay, Fdelete_overlay, add_overlay_mod_hooklist) (report_overlay_modification): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Foverlays_at, Fnext_overlay_change, Fprevious_overlay_change): Omit pointer cast, which isn't needed anyway, and doesn't work after the EMACS_INT -> ptrdiff_t change. * buffer.h: Adjust decls to match defn changes elsewhere. (struct buffer_text, struct buffer): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. Use EMACS_INT, not int, where int might not be wide enough. * bytecode.c (exec_byte_code): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. Remove unnecessary memory-full test. Use EMACS_INT, not ptrdiff_t or int, where ptrdiff_t or int might not be wide enough. * callint.c (Fcall_interactively): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * callproc.c (call_process_kill, Fcall_process): Don't assume pid_t fits into an Emacs fixnum. (call_process_cleanup, Fcall_process, child_setup): Don't assume pid_t fits into int. (call_process_cleanup, Fcall_process, delete_temp_file) (Fcall_process_region): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fcall_process): Simplify handling of volatile integers. Use int, not EMACS_INT, where int will do. * casefiddle.c (casify_object, casify_region, operate_on_word) (Fupcase_word, Fdowncase_word, Fcapitalize_word): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (casify_object): Avoid integer overflow when overallocating buffer. * casetab.c (set_identity, shuffle): Prefer int to unsigned when either works. * category.c (Fchar_category_set): Don't assume fixnum fits in int. * category.h (CATEGORYP): Don't assume arg is nonnegative. * ccl.c (GET_CCL_INT): Remove; no longer needed, since the integers are now checked earlier. All uses replaced with XINT. (ccl_driver): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. For CCL_MapSingle, check that content and value are in int range. (resolve_symbol_ccl_program): Check that vector header is in range. Always copy the vector, so that we can check its contents reliably now rather than having to recheck each instruction as it's being executed. Check that vector words fit in 'int'. (ccl_get_compiled_code, Fregister_ccl_program) (Fregister_code_conversion_map): Use ptrdiff_t, not int, for program indexes, to avoid needless 32-bit limit on 64-bit hosts. (Fccl_execute, Fccl_execute_on_string): Check that initial reg contents are in range. (Fccl_execute_on_string): Check that status is in range. * ccl.h (struct ccl_program.idx): Now ptrdiff_t, not int. * character.c (char_resolve_modifier_mask, Fchar_resolve_modifiers): Accept and return EMACS_INT, not int, because callers can pass values out of 'int' range. (c_string_width, strwidth, lisp_string_width, chars_in_text) (multibyte_chars_in_text, parse_str_as_multibyte) (str_as_multibyte, count_size_as_multibyte, str_to_multibyte) (str_as_unibyte, str_to_unibyte, string_count_byte8) (string_escape_byte8, Fget_byte): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Funibyte_string): Use CHECK_CHARACTER, not CHECK_NATNUM, to avoid mishandling large integers. * character.h: Adjust decls to match defn changes elsewhere. * charset.c (load_charset_map_from_file, find_charsets_in_text) (Ffind_charset_region): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (load_charset_map_from_file): Redo idx calculation to avoid overflow. (load_charset_map_from_vector, Fdefine_charset_internal): Don't assume fixnum fits in int or unsigned int. (load_charset_map_from_vector, Fmap_charset_chars): Remove now-unnecessary CHECK_NATNUMs. (Fdefine_charset_internal): Check ranges here, more carefully. * chartab.c (Fmake_char_table, Fset_char_table_range) (uniprop_get_decoder, uniprop_get_encoder): Don't assume fixnum fits in int. * cmds.c (move_point): New function, that does the gist of Fforward_char and Fbackward_char, but does so while checking for integer overflow more accurately. (Fforward_char, Fbackward_char, internal_self_insert): Use it. (Fforward_line, Fend_of_line, internal_self_insert) (internal_self_insert): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. Fix a FIXME, by checking for integer overflow when calculating target_clm and actual_clm. * coding.c (detect_coding_XXX, encode_coding_XXX, CODING_DECODE_CHAR) (ASSURE_DESTINATION, coding_alloc_by_realloc) (coding_alloc_by_making_gap, alloc_destination) (detect_coding_utf_8, encode_coding_utf_8, decode_coding_utf_16) (encode_coding_utf_16, detect_coding_emacs_mule) (decode_coding_emacs_mule, encode_coding_emacs_mule) (detect_coding_iso_2022, decode_coding_iso_2022) (encode_invocation_designation, encode_designation_at_bol) (encode_coding_iso_2022, detect_coding_sjis, detect_coding_big5) (decode_coding_sjis, decode_coding_big5, encode_coding_sjis) (encode_coding_big5, detect_coding_ccl, decode_coding_ccl) (encode_coding_ccl, encode_coding_raw_text) (detect_coding_charset, decode_coding_charset) (encode_coding_charset, detect_eol, decode_eol, produce_chars) (produce_composition, produce_charset, produce_annotation) (decode_coding, handle_composition_annotation) (handle_charset_annotation, consume_chars, decode_coding_gap) (decode_coding_object, encode_coding_object, detect_coding_system) (Ffind_coding_systems_region_internal, Fcheck_coding_systems_region) (code_convert_region, code_convert_string) (Fdefine_coding_system_internal): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (setup_iso_safe_charsets, consume_chars, Funencodable_char_position) (Fdefine_coding_system_internal): Don't assume fixnums fit in int. (decode_coding_gap, decode_coding_object, encode_coding_object) (Fread_coding_system, Fdetect_coding_region, Funencodable_char_position) (Fcheck_coding_systems_region): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Ffind_operation_coding_system): NATNUMP can eval its arg twice. (Fdefine_coding_system_internal): Check for charset-id overflow. * coding.h: Adjust decls to match defn changes elsewhere. (struct coding_system): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * composite.c (get_composition_id, find_composition) (run_composition_function, update_compositions) (compose_text, composition_gstring_put_cache) (composition_gstring_p, composition_gstring_width) (fill_gstring_header, fill_gstring_body, autocmp_chars) (composition_compute_stop_pos, composition_reseat_it) (composition_update_it, struct position_record) (find_automatic_composition, composition_adjust_point) (Fcomposition_get_gstring, Ffind_composition_internal): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (update_compositions): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * composite.h: Adjust decls to match defn changes elsewhere. (struct composition): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * data.c (let_shadows_buffer_binding_p, let_shadows_global_binding_p): Do not attempt to compute the address of the object just before a buffer; this is not portable. (Faref, Faset): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Faset): Use int, not EMACS_INT, where int is wide enough. (Fstring_to_number): Don't assume fixnums fit in int. (Frem): Don't assume arg is nonnegative. * dbusbind.c (xd_append_arg): Check for integers out of range. (Fdbus_call_method): Don't overflow the timeout int. * dired.c (directory_files_internal, file_name_completion, scmp) (file_name_completion_stat): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (file_name_completion): Don't overflow matchcount. (file_name_completion_stat): Use SAFE_ALLOCA, not alloca. * dispextern.h: Adjust decls to match defn changes elsewhere. (struct text_pos, struct glyph, struct bidi_saved_info) (struct bidi_string_data, struct bidi_it, struct composition_it) (struct it): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (struct display_pos, struct composition_it, struct it): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * dispnew.c (increment_matrix_positions) (increment_row_positions, mode_line_string) (marginal_area_string): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (change_frame_size_1, Fredisplay): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (duration_to_sec_usec): New function, to check for overflow better. (Fsleep_for, sit_for): Use it. * doc.c (get_doc_string, store_function_docstring): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (get_doc_string, Fsnarf_documentation): Use int, not EMACS_INT, where int is wide enough. (get_doc_string): Use SAFE_ALLOCA, not alloca. Check for overflow when converting EMACS_INT to off_t. * doprnt.c (doprnt): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * editfns.c (init_editfns, Fuser_uid, Fuser_real_uid): Don't assume uid_t fits into fixnum. (buildmark, Fgoto_char, overlays_around, find_field, Fdelete_field) (Ffield_string, Ffield_string_no_properties, Ffield_beginning) (Ffield_end, Fconstrain_to_field, Fline_beginning_position) (Fline_end_position, Fprevious_char, Fchar_after, Fchar_before) (general_insert_function) (Finsert_char, make_buffer_string, make_buffer_string_both) (update_buffer_properties, Fbuffer_substring) (Fbuffer_substring_no_properties, Fcompare_buffer_substrings) (Fsubst_char_in_region, check_translation) (Ftranslate_region_internal, save_restriction_restore, Fformat) (transpose_markers, Ftranspose_regions): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (clip_to_bounds): Move to lisp.h as an inline function). (Fconstrain_to_field): Don't assume integers are nonnegative. (Fline_beginning_position, Fsave_excursion, Fsave_current_buffer): (Fsubst_char_in_region, Fsave_restriction): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Femacs_pid): Don't assume pid_t fits into fixnum. (lo_time): Use int, not EMACS_INT, when int suffices. (lisp_time_argument): Check for usec out of range. (Fencode_time): Don't assume fixnum fits in int. * emacs.c (gdb_valbits, gdb_gctypebits): Now int, not EMACS_INT. (gdb_data_seg_bits): Now uintptr_t, not EMACS_INT. (PVEC_FLAG, gdb_array_mark_flag): Now ptrdiff_t, not EMACS_INT. (init_cmdargs, Fdump_emacs): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fkill_emacs): Don't assume fixnum fits in int; instead, take just the bottom (typically) 32 bits of the fixnum. * eval.c (specpdl_size, call_debugger): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (when_entered_debugger, Fbacktrace_debug): Don't assume fixnum can fit in int. (Fdefvaralias, Fdefvar): Do not attempt to compute the address of the object just before a buffer; this is not portable. (FletX, Flet, Funwind_protect, do_autoload, Feval, funcall_lambda) (grow_specpdl, unbind_to): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fapply, apply_lambda): Don't assume ptrdiff_t can hold fixnum. (grow_specpdl): Simplify allocation by using xpalloc. * fileio.c (Ffind_file_name_handler, Fcopy_file, Frename_file) (Finsert_file_contents, Fwrite_region, Fdo_auto_save): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Ffind_file_name_handler, non_regular_inserted, Finsert_file_contents) (a_write, e_write): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fcopy_file, non_regular_nbytes, read_non_regular) (Finsert_file_contents): Use int, not EMACS_INT, where int is wide enough. (READ_BUF_SIZE): Verify that it fits in int. (Finsert_file_contents): Check that counts are in proper range, rather than assuming fixnums fit into ptrdiff_t etc. Don't assume fixnums fit into int. (Fdo_auto_save, Fset_buffer_auto_saved) (Fclear_buffer_auto_save_failure): Don't assume time_t is signed, or that it fits in int. * fns.c (Fcompare_strings, Fstring_lessp, struct textprop_rec) (concat, string_char_byte_cache_charpos, string_char_byte_cache_bytepos) (string_char_to_byte, string_byte_to_char) (string_make_multibyte, string_to_multibyte) (string_make_unibyte, Fstring_as_unibyte, Fstring_as_multibyte) (Fstring_to_unibyte, Fsubstring, Fsubstring_no_properties) (substring_both, Fdelete, internal_equal, Ffillarray) (Fclear_string, mapcar1) (Fbase64_encode_region, Fbase64_encode_string, base64_encode_1) (Fbase64_decode_region, Fbase64_decode_string, base64_decode_1) (larger_vector, make_hash_table, maybe_resize_hash_table) (hash_lookup, hash_remove_from_table, hash_clear, sweep_weak_table) (Fmaphash, secure_hash): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (concat): Check for string index and length overflow. (Fmapconcat): Don't assume fixnums fit into ptrdiff_t. (Frequire): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (larger_vector): New API (vec, incr_min, size_max) replaces old one (vec, new_size, init). This catches size overflow. INIT was removed because it was always Qnil. All callers changed. (INDEX_SIZE_BOUND): New macro, which calculates more precisely the upper bound on a hash table index size. (make_hash_table, maybe_resize_hash_table): Use it. (secure_hash): Computer start_byte and end_byte only after they're known to be in ptrdiff_t range. * font.c (font_intern_prop, font_at, font_range, Ffont_shape_gstring) (Ffont_get_glyphs, Ffont_at): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (font_style_to_value, font_prop_validate_style, font_expand_wildcards) (Flist_fonts, Fopen_font): Don't assume fixnum can fit in int. (check_gstring): Don't assume index can fit in int. (font_match_p): Check that fixnum is a character, not a nonnegative fixnum, since the later code needs to stuff it into an int. (font_find_for_lface): Use SAFE_ALLOCA_LISP, not alloca. (font_fill_lglyph_metrics): Use unsigned, not EMACS_INT, to avoid conversion overflow issues. (Fopen_font): Check for integer out of range. (Ffont_get_glyphs): Don't assume index can fit in int. * font.h: Adjust decls to match defn changes elsewhere. * fontset.c (reorder_font_vector): Redo score calculation to avoid integer overflow. (num_auto_fontsets, fontset_from_font): Use ptrdiff_t, not printmax_t, where ptrdiff_t is wide enough. (Finternal_char_font): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * frame.c (Fset_mouse_position, Fset_mouse_pixel_position) (Fset_frame_height, Fset_frame_width, Fset_frame_size) (Fset_frame_position, x_set_frame_parameters) (x_set_line_spacing, x_set_border_width) (x_set_internal_border_width, x_set_alpha, x_figure_window_size): Check that fixnums are in proper range for system types. (frame_name_fnn_p, Fframe_parameter, Fmodify_frame_parameters): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fmodify_frame_parameters): Don't assume fixnum fits in int. Use SAFE_ALLOCA_LISP, not alloca. * frame.h (struct frame): Use intptr_t, not EMACS_INT, where intptr_t is wide enough. * fringe.c (lookup_fringe_bitmap, get_logical_fringe_bitmap) (Fdefine_fringe_bitmap): Don't assume fixnum fits in int. (Ffringe_bitmaps_at_pos): Don't assume index fits in int. Check for fixnum out of range. * ftfont.c (ftfont_list): Don't assume index fits in int. Check that fixnums are in proper range for system types. (ftfont_shape_by_flt): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. Remove no-longer-needed lint_assume. * gnutls.c (emacs_gnutls_write, emacs_gnutls_read): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fgnutls_error_fatalp, Fgnutls_error_string, Fgnutls_boot): Check that fixnums are in proper range for system types. * gnutls.h: Adjust decls to match defn changes elsewhere. * gtkutil.c (xg_dialog_run): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (update_frame_tool_bar): Check that fixnums are in proper range for system types. * image.c (parse_image_spec): Redo count calculation to avoid overflow. (lookup_image): Check that fixnums are in proper range for system types. * indent.c (last_known_column, last_known_column_point): (current_column_bol_cache): (skip_invisible, current_column, check_display_width): (check_display_width, scan_for_column, current_column_1) (Findent_to, Fcurrent_indentation, position_indentation) (indented_beyond_p, Fmove_to_column, compute_motion): (Fcompute_motion, Fvertical_motion): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (last_known_column_modified): Use EMACS_INT, not int. (check_display_width): (Fcompute_motion): Check that fixnums and floats are in proper range for system types. (compute_motion): Don't assume index or fixnum fits in int. (compute_motion, Fcompute_motion): Use int, not EMACS_INT, when it is wide enough. (vmotion): Omit local var start_hpos that is always 0; that way we don't need to worry about overflow in expressions involving it. * indent.h: Adjust decls to match defn changes elsewhere. (struct position): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. Use int, not EMACS_INT, where int is wide enough. Remove unused members ovstring_chars_done and tab_offset; all uses removed. * insdel.c (move_gap, move_gap_both, gap_left, gap_right) (adjust_markers_for_delete, adjust_markers_for_insert, adjust_point) (adjust_markers_for_replace, make_gap_larger, make_gap_smaller) (make_gap, copy_text, insert, insert_and_inherit) (insert_before_markers, insert_before_markers_and_inherit) (insert_1, count_combining_before, count_combining_after) (insert_1_both, insert_from_string) (insert_from_string_before_markers, insert_from_string_1) (insert_from_gap, insert_from_buffer, insert_from_buffer_1) (adjust_after_replace, adjust_after_insert, replace_range) (replace_range_2, del_range, del_range_1, del_range_byte) (del_range_both, del_range_2, modify_region) (prepare_to_modify_buffer, signal_before_change) (signal_after_change, Fcombine_after_change_execute): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * intervals.c (traverse_intervals, rotate_right, rotate_left) (balance_an_interval, split_interval_right, split_interval_left) (find_interval, next_interval, update_interval) (adjust_intervals_for_insertion, delete_node, delete_interval) (interval_deletion_adjustment, adjust_intervals_for_deletion) (static_offset_intervals, offset_intervals) (merge_interval_right, merge_interval_left, make_new_interval) (graft_intervals_into_buffer, temp_set_point_both) (temp_set_point, set_point, adjust_for_invis_intang) (set_point_both, move_if_not_intangible, get_property_and_range) (get_local_map, copy_intervals, copy_intervals_to_string) (compare_string_intervals, set_intervals_multibyte_1): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * intervals.h: Adjust decls to match defn changes elsewhere. (struct interval): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * keyboard.c (this_command_key_count, this_single_command_key_start) (before_command_key_count, before_command_echo_length, echo_now) (echo_length, recursive_edit_1, Frecursive_edit, Ftrack_mouse) (command_loop_1, safe_run_hooks, read_char, timer_check_2) (menu_item_eval_property, read_key_sequence, Fread_key_sequence) (Fread_key_sequence_vector, Fexecute_extended_command, Fsuspend_emacs): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (last_non_minibuf_size, last_point_position, echo_truncate) (command_loop_1, adjust_point_for_property, read_char, gen_help_event) (make_lispy_position, make_lispy_event, parse_modifiers_uncached) (parse_modifiers, modify_event_symbol, Fexecute_extended_command) (stuff_buffered_input): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (last_auto_save, command_loop_1, read_char): Use EMACS_INT, not int, to avoid integer overflow. (record_char): Avoid overflow in total_keys computation. (parse_modifiers_uncached): Redo index calculation to avoid overflow. * keyboard.h: Adjust decls to match defn changes elsewhere. * keymap.c (Fdefine_key, Fcurrent_active_maps, accessible_keymaps_1) (Fkey_description, Fdescribe_vector, Flookup_key): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (click_position): New function, to check that positions are in range. (Fcurrent_active_maps): (describe_command): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Faccessible_keymaps, Fkey_description): (preferred_sequence_p): Don't assume fixnum can fit into int. (Fkey_description): Use SAFE_ALLOCA_LISP, not alloca. Check for integer overflow in size calculations. (Ftext_char_description): Use CHECK_CHARACTER, not CHECK_NUMBER, to avoid mishandling large integers. * lisp.h: Adjust decls to match defn changes elsewhere. (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, struct Lisp_String) (struct vectorlike_header, struct Lisp_Subr, struct Lisp_Hash_Table) (struct Lisp_Marker): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (clip_to_bounds): Now an inline function, moved here from editfns.c. (XSETSUBR): Use size of 0 since the actual size doesn't matter, and using 0 avoids overflow. (GLYPH_CODE_P): Check for overflow in system types, subsuming the need for GLYPH_CODE_CHAR_VALID_P and doing proper checking ourselves. All callers changed. (GLYPH_CODE_CHAR, GLYPH_CODE_FACE): Assume the arg has valid form, since it always does. (TYPE_RANGED_INTEGERP): Avoid bug when checking against a wide unsigned integer system type. (CHECK_RANGED_INTEGER, CHECK_TYPE_RANGED_INTEGER): New macros. (struct catchtag, specpdl_size, SPECPDL_INDEX, USE_SAFE_ALLOCA): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (struct catchtag): Use EMACS_INT, not int, since it may be a fixnum. (duration_to_sec_usec): New decl. * lread.c (read_from_string_index, read_from_string_index_byte) (read_from_string_limit, readchar, unreadchar, openp) (read_internal_start, read1, oblookup): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fload, readevalloop, Feval_buffer, Feval_region): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (openp): Check for out-of-range argument to 'access'. (read1): Use int, not EMACS_INT, where int is wide enough. Don't assume fixnum fits into int. * macros.c (Fstart_kbd_macro): Use xpalloc to check for overflow in size calculation. (Fexecute_kbd_macro): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * marker.c (cached_charpos, cached_bytepos, CONSIDER) (byte_char_debug_check, buf_charpos_to_bytepos, verify_bytepos) (buf_bytepos_to_charpos, Fset_marker, set_marker_restricted) (set_marker_both, set_marker_restricted_both, marker_position) (marker_byte_position, Fbuffer_has_markers_at): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fset_marker, set_marker_restricted): Don't assume fixnum fits in int. * menu.c (ensure_menu_items): Renamed from grow_menu_items. It now merely ensures that the menu is large enough, without necessarily growing it, as this avoids some integer overflow issues. All callers changed. (keymap_panes, parse_single_submenu, Fx_popup_menu): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (parse_single_submenu, Fx_popup_menu): Don't assume fixnum fits in int. Use SAFE_ALLOCA_LISP, not alloca. (find_and_return_menu_selection): Avoid unnecessary casts of pointers to EMACS_INT. Check that fixnums are in proper range for system types. * minibuf.c (minibuf_prompt_width, string_to_object) (Fminibuffer_contents, Fminibuffer_contents_no_properties) (Fminibuffer_completion_contents, Ftry_completion, Fall_completions): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (get_minibuffer, read_minibuf_unwind): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (read_minibuf): Omit unnecessary arg BACKUP_N, which is always nil; this simplifies overflow checking. All callers changed. (read_minibuf, Fread_buffer, Ftry_completion, Fall_completions) (Ftest_completion): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * nsfns.m (check_ns_display_info): Don't assume fixnum fits in long. (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_create_frame): Check that fixnums are in proper range for system types. (Fx_create_frame, Fx_show_tip): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * nsfont.m (ns_findfonts, nsfont_list_family): Don't assume fixnum fits in long. * nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (ns_update_menubar): Use intptr_t, not EMACS_INT, when intptr_t is wide enough. * nsselect.m (ns_get_local_selection): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * print.c (print_buffer_size, print_buffer_pos, print_buffer_pos_byte) (PRINTDECLARE, PRINTPREPARE): (strout, print_string): (print, print_preprocess, print_check_string_charset_prop) (print_object): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (PRINTDECLARE): (temp_output_buffer_setup, Fprin1_to_string, print_object): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (PRINTPREPARE): Use int, not ptrdiff_t, where int is wide enough. (PRINTFINISH): Use SAFE_ALLOCA, not alloca. (printchar, strout): Use xpalloc to catch size calculation overflow. (Fexternal_debugging_output): Use CHECK_CHARACTER, not CHECK_NUMBER, to avoid mishandling large integers. (print_error_message): Use SAFE_ALLOCA, not alloca. (print_object): Use int, not EMACS_INT, where int is wide enough. * process.c (Fdelete_process): Don't assume pid fits into EMACS_INT. (Fset_process_window_size, Fformat_network_address) (get_lisp_to_sockaddr_size, set_socket_option, Fmake_network_process) (Fsignal_process, sigchld_handler): Check that fixnums are in proper range for system types. (Fformat_network_address, read_process_output, send_process) (Fprocess_send_region, status_notify): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fformat_network_address, Fmake_serial_process, Fmake_network_process) (wait_reading_process_output, read_process_output, exec_sentinel): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (conv_lisp_to_sockaddr): Don't assume fixnums fit into int. (Faccept_process_output): Use duration_to_sec_usec to do proper overflow checking on durations. * scroll.c (calculate_scrolling, calculate_direct_scrolling) (line_ins_del): Use int, not EMACS_INT, where int is wide enough. * search.c (looking_at_1, string_match_1): (fast_string_match, fast_c_string_match_ignore_case) (fast_string_match_ignore_case, fast_looking_at, scan_buffer) (scan_newline, find_before_next_newline, search_command) (trivial_regexp_p, search_buffer, simple_search, boyer_moore) (set_search_regs, wordify): (Freplace_match): (Fmatch_data): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (string_match_1, search_buffer, set_search_regs): (Fmatch_data): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (wordify): Check for overflow in size calculation. (Freplace_match): Avoid potential buffer overflow in search_regs.start. (Fset_match_data): Don't assume fixnum fits in ptrdiff_t. Check that fixnums are in proper range for system types. * sound.c (struct sound_device) (wav_play, au_play, vox_write, alsa_period_size, alsa_write): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fplay_sound_internal): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * syntax.c (ST_COMMENT_STYLE, ST_STRING_STYLE): In definitions, make it clearer that these values must be out of range for the respective integer ranges. This fixes a bug with ST_STRING_STYLE and non-ASCII characters. (struct lisp_parse_state, find_start_modiff) (Finternal_describe_syntax_value, scan_lists, scan_sexps_forward): (Fparse_partial_sexp): Don't assume fixnums can fit in int. (struct lisp_parse_state, find_start_pos, find_start_value) (find_start_value_byte, find_start_begv) (update_syntax_table, char_quoted, dec_bytepos) (find_defun_start, prev_char_comend_first, back_comment): (scan_words, skip_chars, skip_syntaxes, forw_comment, Fforward_comment) (scan_lists, Fbackward_prefix_chars, scan_sexps_forward): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Finternal_describe_syntax_value): Check that match_lisp is a character, not an integer, since the code stuffs it into int. (scan_words, scan_sexps_forward): Check that fixnums are in proper range for system types. (Fforward_word): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (scan_sexps_forward): Use CHARACTERP, not INTEGERP, since the value must fit into int. (Fparse_partial_sexp): Fix doc; element 8 is not ignored. * syntax.h: Adjust decls to match defn changes elsewhere. (struct gl_state_s): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * sysdep.c (wait_for_termination_1, wait_for_termination) (interruptible_wait_for_termination, mkdir): Don't assume pid_t fits in int; on 64-bit AIX pid_t is 64-bit. (emacs_read, emacs_write): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (system_process_attributes): Don't assume uid_t, gid_t, and double all fit in int or even EMACS_INT. * term.c (set_tty_color_mode): Check that fixnums are in proper range for system types. * termhooks.h (struct input_event): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * textprop.c (validate_interval_range, interval_of) (Fadd_text_properties, set_text_properties_1) (Fremove_text_properties, Fremove_list_of_text_properties) (Ftext_property_any, Ftext_property_not_all) (copy_text_properties, text_property_list, extend_property_ranges) (verify_interval_modification): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fnext_single_char_property_change) (Fprevious_single_char_property_change): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (copy_text_properties): Check for integer overflow in index calculation. * undo.c (last_boundary_position, record_point, record_insert) (record_delete, record_marker_adjustment, record_change) (record_property_change): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (truncate_undo_list, Fprimitive_undo): Don't assume fixnum fits in int. Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * w32fns.c (Fx_create_frame, x_create_tip_frame, Fx_show_tip) (Fx_hide_tip, Fx_file_dialog): * w32menu.c (set_frame_menubar): Use ptrdiff_t, not int, for consistency with rest of code. * window.c (window_scroll_preserve_hpos, window_scroll_preserve_vpos) (select_window, Fdelete_other_windows_internal) (window_scroll_pixel_based, window_scroll_line_based) (Frecenter, Fset_window_configuration): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (Fset_window_hscroll, run_window_configuration_change_hook) (set_window_buffer, temp_output_buffer_show, scroll_command) (Fscroll_other_window): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fwindow_line_height, window_scroll, Fscroll_left, Fscroll_right): Don't assume fixnum fits in int. (Fset_window_scroll_bars): Check that fixnums are in proper range for system types. * xdisp.c (help_echo_pos, pos_visible_p, string_pos_nchars_ahead) (string_pos, c_string_pos, number_of_chars, init_iterator) (in_ellipses_for_invisible_text_p, init_from_display_pos) (compute_stop_pos, next_overlay_change, compute_display_string_pos) (compute_display_string_end, handle_face_prop) (face_before_or_after_it_pos, handle_invisible_prop, handle_display_prop) (handle_display_spec, handle_single_display_spec) (display_prop_intangible_p, string_buffer_position_lim) (string_buffer_position, handle_composition_prop, load_overlay_strings) (get_overlay_strings_1, get_overlay_strings) (iterate_out_of_display_property, forward_to_next_line_start) (back_to_previous_visible_line_start, reseat, reseat_to_string) (get_next_display_element, set_iterator_to_next) (get_visually_first_element, compute_stop_pos_backwards) (handle_stop_backwards, next_element_from_buffer) (move_it_in_display_line_to, move_it_in_display_line) (move_it_to, move_it_vertically_backward, move_it_by_lines) (add_to_log, message_dolog, message_log_check_duplicate) (message2, message2_nolog, message3, message3_nolog (with_echo_area_buffer, display_echo_area_1, resize_mini_window_1) (current_message_1, truncate_echo_area, truncate_message_1) (set_message, set_message_1, store_mode_line_noprop) (hscroll_window_tree, debug_delta, debug_delta_bytes, debug_end_vpos) (text_outside_line_unchanged_p, check_point_in_composition) (reconsider_clip_changes) (redisplay_internal, set_cursor_from_row, try_scrolling) (try_cursor_movement, set_vertical_scroll_bar, redisplay_window) (redisplay_window, find_last_unchanged_at_beg_row) (find_first_unchanged_at_end_row, row_containing_pos, try_window_id) (trailing_whitespace_p, find_row_edges, display_line) (RECORD_MAX_MIN_POS, Fcurrent_bidi_paragraph_direction) (display_mode_element, store_mode_line_string) (pint2str, pint2hrstr, decode_mode_spec) (display_count_lines, display_string, draw_glyphs) (x_produce_glyphs, x_insert_glyphs) (rows_from_pos_range, mouse_face_from_buffer_pos) (fast_find_string_pos, mouse_face_from_string_pos) (note_mode_line_or_margin_highlight, note_mouse_highlight): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (safe_call, init_from_display_pos, handle_fontified_prop) (handle_single_display_spec, load_overlay_strings) (with_echo_area_buffer, setup_echo_area_for_printing) (display_echo_area, echo_area_display) (x_consider_frame_title, prepare_menu_bars, update_menu_bar) (update_tool_bar, hscroll_window_tree, redisplay_internal) (redisplay_window, dump_glyph_row, display_mode_line, Fformat_mode_line) (decode_mode_spec, on_hot_spot_p): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (handle_single_display_spec, build_desired_tool_bar_string) (redisplay_tool_bar, scroll_window_tree, Fdump_glyph_matrix) (get_specified_cursor_type): Check that fixnums are in proper range for system types. (struct overlay_entry, resize_mini_window, Fdump_glyph_row) (Flookup_image_map): Don't assume fixnums fit in int. (compare_overlay_entries): Avoid mishandling comparisons due to subtraction overflow. (load_overlay_strings): Use SAFE_NALLOCA, not alloca. (last_escape_glyph_face_id, last_glyphless_glyph_face_id): (handle_tool_bar_click): Use int, not unsigned, since we prefer signed and the signedness doesn't matter here. (get_next_display_element, next_element_from_display_vector): Use int, not EMACS_INT, when int is wide enough. (start_hourglass): Use duration_to_sec_usec to do proper overflow checking on durations. * xfaces.c (Fbitmap_spec_p): Check that fixnums are in proper range for system types. (compare_fonts_by_sort_order): Avoid mishandling comparisons due to subtraction overflow. (Fx_family_fonts, realize_basic_faces): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fx_family_fonts): Don't assume fixnum fits in int. Use SAFE_ALLOCA_LISP, not alloca. (merge_face_heights): Remove unnecessary cast to EMACS_INT. (Finternal_make_lisp_face): Don't allocate more than MAX_FACE_ID. (face_at_buffer_position, face_for_overlay_string) (face_at_string_position): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. (merge_faces): Use int, not EMACS_INT, where int is wide enough. * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, x_icon_verify) (Fx_show_tip): Check that fixnums are in proper range for system types. (Fx_create_frame, x_create_tip_frame, Fx_show_tip) (Fx_hide_tip, Fx_file_dialog, Fx_select_font): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (Fx_change_window_property): Don't assume fixnums fit in int. * xfont.c (xfont_chars_supported): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * xmenu.c (Fx_popup_dialog, set_frame_menubar) (create_and_show_popup_menu, create_and_show_dialog, xmenu_show): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * xml.c (parse_region): * xrdb.c (magic_file_p): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough. * xselect.c (TRACE1): Don't assume pid_t promotes to int. (x_get_local_selection, x_reply_selection_request) (x_handle_selection_request, wait_for_property_change): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. (selection_data_to_lisp_data): Use short, not EMACS_INT, where short is wide enough. (x_send_client_event): Don't assume fixnum fits in int. * xterm.c (x_x_to_emacs_modifiers): Don't assume EMACS_INT overflows nicely into int. (x_emacs_to_x_modifiers): Use EMACS_INT, not int, because values may come from Lisp. (handle_one_xevent): NATNUMP can eval its arg twice. (x_connection_closed): Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. * xterm.h: Adjust decls to match defn changes elsewhere. (struct scroll_bar): Use struct vectorlike_header rather than rolling our own approximation. (SCROLL_BAR_VEC_SIZE): Remove; not used.
Diffstat (limited to 'src/insdel.c')
-rw-r--r--src/insdel.c254
1 files changed, 127 insertions, 127 deletions
diff --git a/src/insdel.c b/src/insdel.c
index 01e5c57b2b0..0a9777ad95e 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -36,14 +36,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
36#endif 36#endif
37 37
38static void insert_from_string_1 (Lisp_Object string, 38static void insert_from_string_1 (Lisp_Object string,
39 EMACS_INT pos, EMACS_INT pos_byte, 39 ptrdiff_t pos, ptrdiff_t pos_byte,
40 EMACS_INT nchars, EMACS_INT nbytes, 40 ptrdiff_t nchars, ptrdiff_t nbytes,
41 int inherit, int before_markers); 41 int inherit, int before_markers);
42static void insert_from_buffer_1 (struct buffer *buf, 42static void insert_from_buffer_1 (struct buffer *buf,
43 EMACS_INT from, EMACS_INT nchars, 43 ptrdiff_t from, ptrdiff_t nchars,
44 int inherit); 44 int inherit);
45static void gap_left (EMACS_INT charpos, EMACS_INT bytepos, int newgap); 45static void gap_left (ptrdiff_t charpos, ptrdiff_t bytepos, int newgap);
46static void gap_right (EMACS_INT charpos, EMACS_INT bytepos); 46static void gap_right (ptrdiff_t charpos, ptrdiff_t bytepos);
47 47
48static Lisp_Object Fcombine_after_change_execute (void); 48static Lisp_Object Fcombine_after_change_execute (void);
49 49
@@ -64,7 +64,7 @@ static Lisp_Object combine_after_change_buffer;
64 64
65Lisp_Object Qinhibit_modification_hooks; 65Lisp_Object Qinhibit_modification_hooks;
66 66
67static void signal_before_change (EMACS_INT, EMACS_INT, EMACS_INT *); 67static void signal_before_change (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
68 68
69#define CHECK_MARKERS() \ 69#define CHECK_MARKERS() \
70 do \ 70 do \
@@ -97,7 +97,7 @@ check_markers (void)
97 Note that this can quit! */ 97 Note that this can quit! */
98 98
99void 99void
100move_gap (EMACS_INT charpos) 100move_gap (ptrdiff_t charpos)
101{ 101{
102 move_gap_both (charpos, charpos_to_bytepos (charpos)); 102 move_gap_both (charpos, charpos_to_bytepos (charpos));
103} 103}
@@ -106,7 +106,7 @@ move_gap (EMACS_INT charpos)
106 Note that this can quit! */ 106 Note that this can quit! */
107 107
108void 108void
109move_gap_both (EMACS_INT charpos, EMACS_INT bytepos) 109move_gap_both (ptrdiff_t charpos, ptrdiff_t bytepos)
110{ 110{
111 if (bytepos < GPT_BYTE) 111 if (bytepos < GPT_BYTE)
112 gap_left (charpos, bytepos, 0); 112 gap_left (charpos, bytepos, 0);
@@ -120,11 +120,11 @@ move_gap_both (EMACS_INT charpos, EMACS_INT bytepos)
120 If NEWGAP is nonzero, then don't update beg_unchanged and end_unchanged. */ 120 If NEWGAP is nonzero, then don't update beg_unchanged and end_unchanged. */
121 121
122static void 122static void
123gap_left (EMACS_INT charpos, EMACS_INT bytepos, int newgap) 123gap_left (ptrdiff_t charpos, ptrdiff_t bytepos, int newgap)
124{ 124{
125 register unsigned char *to, *from; 125 register unsigned char *to, *from;
126 register EMACS_INT i; 126 register ptrdiff_t i;
127 EMACS_INT new_s1; 127 ptrdiff_t new_s1;
128 128
129 if (!newgap) 129 if (!newgap)
130 BUF_COMPUTE_UNCHANGED (current_buffer, charpos, GPT); 130 BUF_COMPUTE_UNCHANGED (current_buffer, charpos, GPT);
@@ -175,11 +175,11 @@ gap_left (EMACS_INT charpos, EMACS_INT bytepos, int newgap)
175 and CHARPOS is the corresponding char position. */ 175 and CHARPOS is the corresponding char position. */
176 176
177static void 177static void
178gap_right (EMACS_INT charpos, EMACS_INT bytepos) 178gap_right (ptrdiff_t charpos, ptrdiff_t bytepos)
179{ 179{
180 register unsigned char *to, *from; 180 register unsigned char *to, *from;
181 register EMACS_INT i; 181 register ptrdiff_t i;
182 EMACS_INT new_s1; 182 ptrdiff_t new_s1;
183 183
184 BUF_COMPUTE_UNCHANGED (current_buffer, charpos, GPT); 184 BUF_COMPUTE_UNCHANGED (current_buffer, charpos, GPT);
185 185
@@ -229,12 +229,12 @@ gap_right (EMACS_INT charpos, EMACS_INT bytepos)
229 or inside of the range being deleted. */ 229 or inside of the range being deleted. */
230 230
231void 231void
232adjust_markers_for_delete (EMACS_INT from, EMACS_INT from_byte, 232adjust_markers_for_delete (ptrdiff_t from, ptrdiff_t from_byte,
233 EMACS_INT to, EMACS_INT to_byte) 233 ptrdiff_t to, ptrdiff_t to_byte)
234{ 234{
235 Lisp_Object marker; 235 Lisp_Object marker;
236 register struct Lisp_Marker *m; 236 register struct Lisp_Marker *m;
237 register EMACS_INT charpos; 237 register ptrdiff_t charpos;
238 238
239 for (m = BUF_MARKERS (current_buffer); m; m = m->next) 239 for (m = BUF_MARKERS (current_buffer); m; m = m->next)
240 { 240 {
@@ -294,13 +294,13 @@ adjust_markers_for_delete (EMACS_INT from, EMACS_INT from_byte,
294 or BEFORE_MARKERS is true. */ 294 or BEFORE_MARKERS is true. */
295 295
296static void 296static void
297adjust_markers_for_insert (EMACS_INT from, EMACS_INT from_byte, 297adjust_markers_for_insert (ptrdiff_t from, ptrdiff_t from_byte,
298 EMACS_INT to, EMACS_INT to_byte, int before_markers) 298 ptrdiff_t to, ptrdiff_t to_byte, int before_markers)
299{ 299{
300 struct Lisp_Marker *m; 300 struct Lisp_Marker *m;
301 int adjusted = 0; 301 int adjusted = 0;
302 EMACS_INT nchars = to - from; 302 ptrdiff_t nchars = to - from;
303 EMACS_INT nbytes = to_byte - from_byte; 303 ptrdiff_t nbytes = to_byte - from_byte;
304 304
305 for (m = BUF_MARKERS (current_buffer); m; m = m->next) 305 for (m = BUF_MARKERS (current_buffer); m; m = m->next)
306 { 306 {
@@ -345,7 +345,7 @@ adjust_markers_for_insert (EMACS_INT from, EMACS_INT from_byte,
345 intervals. */ 345 intervals. */
346 346
347static void 347static void
348adjust_point (EMACS_INT nchars, EMACS_INT nbytes) 348adjust_point (ptrdiff_t nchars, ptrdiff_t nbytes)
349{ 349{
350 SET_BUF_PT_BOTH (current_buffer, PT + nchars, PT_BYTE + nbytes); 350 SET_BUF_PT_BOTH (current_buffer, PT + nchars, PT_BYTE + nbytes);
351 /* In a single-byte buffer, the two positions must be equal. */ 351 /* In a single-byte buffer, the two positions must be equal. */
@@ -358,14 +358,14 @@ adjust_point (EMACS_INT nchars, EMACS_INT nbytes)
358 an insertion. */ 358 an insertion. */
359 359
360static void 360static void
361adjust_markers_for_replace (EMACS_INT from, EMACS_INT from_byte, 361adjust_markers_for_replace (ptrdiff_t from, ptrdiff_t from_byte,
362 EMACS_INT old_chars, EMACS_INT old_bytes, 362 ptrdiff_t old_chars, ptrdiff_t old_bytes,
363 EMACS_INT new_chars, EMACS_INT new_bytes) 363 ptrdiff_t new_chars, ptrdiff_t new_bytes)
364{ 364{
365 register struct Lisp_Marker *m; 365 register struct Lisp_Marker *m;
366 EMACS_INT prev_to_byte = from_byte + old_bytes; 366 ptrdiff_t prev_to_byte = from_byte + old_bytes;
367 EMACS_INT diff_chars = new_chars - old_chars; 367 ptrdiff_t diff_chars = new_chars - old_chars;
368 EMACS_INT diff_bytes = new_bytes - old_bytes; 368 ptrdiff_t diff_bytes = new_bytes - old_bytes;
369 369
370 for (m = BUF_MARKERS (current_buffer); m; m = m->next) 370 for (m = BUF_MARKERS (current_buffer); m; m = m->next)
371 { 371 {
@@ -394,13 +394,13 @@ buffer_overflow (void)
394/* Make the gap NBYTES_ADDED bytes longer. */ 394/* Make the gap NBYTES_ADDED bytes longer. */
395 395
396static void 396static void
397make_gap_larger (EMACS_INT nbytes_added) 397make_gap_larger (ptrdiff_t nbytes_added)
398{ 398{
399 Lisp_Object tem; 399 Lisp_Object tem;
400 EMACS_INT real_gap_loc; 400 ptrdiff_t real_gap_loc;
401 EMACS_INT real_gap_loc_byte; 401 ptrdiff_t real_gap_loc_byte;
402 EMACS_INT old_gap_size; 402 ptrdiff_t old_gap_size;
403 EMACS_INT current_size = Z_BYTE - BEG_BYTE + GAP_SIZE; 403 ptrdiff_t current_size = Z_BYTE - BEG_BYTE + GAP_SIZE;
404 enum { enough_for_a_while = 2000 }; 404 enum { enough_for_a_while = 2000 };
405 405
406 if (BUF_BYTES_MAX - current_size < nbytes_added) 406 if (BUF_BYTES_MAX - current_size < nbytes_added)
@@ -446,15 +446,15 @@ make_gap_larger (EMACS_INT nbytes_added)
446/* Make the gap NBYTES_REMOVED bytes shorter. */ 446/* Make the gap NBYTES_REMOVED bytes shorter. */
447 447
448static void 448static void
449make_gap_smaller (EMACS_INT nbytes_removed) 449make_gap_smaller (ptrdiff_t nbytes_removed)
450{ 450{
451 Lisp_Object tem; 451 Lisp_Object tem;
452 EMACS_INT real_gap_loc; 452 ptrdiff_t real_gap_loc;
453 EMACS_INT real_gap_loc_byte; 453 ptrdiff_t real_gap_loc_byte;
454 EMACS_INT real_Z; 454 ptrdiff_t real_Z;
455 EMACS_INT real_Z_byte; 455 ptrdiff_t real_Z_byte;
456 EMACS_INT real_beg_unchanged; 456 ptrdiff_t real_beg_unchanged;
457 EMACS_INT new_gap_size; 457 ptrdiff_t new_gap_size;
458 458
459 /* Make sure the gap is at least 20 bytes. */ 459 /* Make sure the gap is at least 20 bytes. */
460 if (GAP_SIZE - nbytes_removed < 20) 460 if (GAP_SIZE - nbytes_removed < 20)
@@ -504,7 +504,7 @@ make_gap_smaller (EMACS_INT nbytes_removed)
504#endif /* USE_MMAP_FOR_BUFFERS || REL_ALLOC || DOUG_LEA_MALLOC */ 504#endif /* USE_MMAP_FOR_BUFFERS || REL_ALLOC || DOUG_LEA_MALLOC */
505 505
506void 506void
507make_gap (EMACS_INT nbytes_added) 507make_gap (ptrdiff_t nbytes_added)
508{ 508{
509 if (nbytes_added >= 0) 509 if (nbytes_added >= 0)
510 make_gap_larger (nbytes_added); 510 make_gap_larger (nbytes_added);
@@ -521,9 +521,9 @@ make_gap (EMACS_INT nbytes_added)
521 521
522 Return the number of bytes stored at TO_ADDR. */ 522 Return the number of bytes stored at TO_ADDR. */
523 523
524EMACS_INT 524ptrdiff_t
525copy_text (const unsigned char *from_addr, unsigned char *to_addr, 525copy_text (const unsigned char *from_addr, unsigned char *to_addr,
526 EMACS_INT nbytes, int from_multibyte, int to_multibyte) 526 ptrdiff_t nbytes, int from_multibyte, int to_multibyte)
527{ 527{
528 if (from_multibyte == to_multibyte) 528 if (from_multibyte == to_multibyte)
529 { 529 {
@@ -532,8 +532,8 @@ copy_text (const unsigned char *from_addr, unsigned char *to_addr,
532 } 532 }
533 else if (from_multibyte) 533 else if (from_multibyte)
534 { 534 {
535 EMACS_INT nchars = 0; 535 ptrdiff_t nchars = 0;
536 EMACS_INT bytes_left = nbytes; 536 ptrdiff_t bytes_left = nbytes;
537 537
538 while (bytes_left > 0) 538 while (bytes_left > 0)
539 { 539 {
@@ -580,11 +580,11 @@ copy_text (const unsigned char *from_addr, unsigned char *to_addr,
580 prepare_to_modify_buffer could relocate the text. */ 580 prepare_to_modify_buffer could relocate the text. */
581 581
582void 582void
583insert (const char *string, EMACS_INT nbytes) 583insert (const char *string, ptrdiff_t nbytes)
584{ 584{
585 if (nbytes > 0) 585 if (nbytes > 0)
586 { 586 {
587 EMACS_INT len = chars_in_text ((unsigned char *) string, nbytes), opoint; 587 ptrdiff_t len = chars_in_text ((unsigned char *) string, nbytes), opoint;
588 insert_1_both (string, len, nbytes, 0, 1, 0); 588 insert_1_both (string, len, nbytes, 0, 1, 0);
589 opoint = PT - len; 589 opoint = PT - len;
590 signal_after_change (opoint, 0, len); 590 signal_after_change (opoint, 0, len);
@@ -595,11 +595,11 @@ insert (const char *string, EMACS_INT nbytes)
595/* Likewise, but inherit text properties from neighboring characters. */ 595/* Likewise, but inherit text properties from neighboring characters. */
596 596
597void 597void
598insert_and_inherit (const char *string, EMACS_INT nbytes) 598insert_and_inherit (const char *string, ptrdiff_t nbytes)
599{ 599{
600 if (nbytes > 0) 600 if (nbytes > 0)
601 { 601 {
602 EMACS_INT len = chars_in_text ((unsigned char *) string, nbytes), opoint; 602 ptrdiff_t len = chars_in_text ((unsigned char *) string, nbytes), opoint;
603 insert_1_both (string, len, nbytes, 1, 1, 0); 603 insert_1_both (string, len, nbytes, 1, 1, 0);
604 opoint = PT - len; 604 opoint = PT - len;
605 signal_after_change (opoint, 0, len); 605 signal_after_change (opoint, 0, len);
@@ -640,11 +640,11 @@ insert_string (const char *s)
640 since gc could happen and relocate it. */ 640 since gc could happen and relocate it. */
641 641
642void 642void
643insert_before_markers (const char *string, EMACS_INT nbytes) 643insert_before_markers (const char *string, ptrdiff_t nbytes)
644{ 644{
645 if (nbytes > 0) 645 if (nbytes > 0)
646 { 646 {
647 EMACS_INT len = chars_in_text ((unsigned char *) string, nbytes), opoint; 647 ptrdiff_t len = chars_in_text ((unsigned char *) string, nbytes), opoint;
648 insert_1_both (string, len, nbytes, 0, 1, 1); 648 insert_1_both (string, len, nbytes, 0, 1, 1);
649 opoint = PT - len; 649 opoint = PT - len;
650 signal_after_change (opoint, 0, len); 650 signal_after_change (opoint, 0, len);
@@ -656,11 +656,11 @@ insert_before_markers (const char *string, EMACS_INT nbytes)
656 656
657void 657void
658insert_before_markers_and_inherit (const char *string, 658insert_before_markers_and_inherit (const char *string,
659 EMACS_INT nbytes) 659 ptrdiff_t nbytes)
660{ 660{
661 if (nbytes > 0) 661 if (nbytes > 0)
662 { 662 {
663 EMACS_INT len = chars_in_text ((unsigned char *) string, nbytes), opoint; 663 ptrdiff_t len = chars_in_text ((unsigned char *) string, nbytes), opoint;
664 insert_1_both (string, len, nbytes, 1, 1, 1); 664 insert_1_both (string, len, nbytes, 1, 1, 1);
665 opoint = PT - len; 665 opoint = PT - len;
666 signal_after_change (opoint, 0, len); 666 signal_after_change (opoint, 0, len);
@@ -671,7 +671,7 @@ insert_before_markers_and_inherit (const char *string,
671/* Subroutine used by the insert functions above. */ 671/* Subroutine used by the insert functions above. */
672 672
673void 673void
674insert_1 (const char *string, EMACS_INT nbytes, 674insert_1 (const char *string, ptrdiff_t nbytes,
675 int inherit, int prepare, int before_markers) 675 int inherit, int prepare, int before_markers)
676{ 676{
677 insert_1_both (string, chars_in_text ((unsigned char *) string, nbytes), 677 insert_1_both (string, chars_in_text ((unsigned char *) string, nbytes),
@@ -687,8 +687,8 @@ insert_1 (const char *string, EMACS_INT nbytes,
687 which combine in this way. Otherwise, return 0. */ 687 which combine in this way. Otherwise, return 0. */
688 688
689int 689int
690count_combining_before (const unsigned char *string, EMACS_INT length, 690count_combining_before (const unsigned char *string, ptrdiff_t length,
691 EMACS_INT pos, EMACS_INT pos_byte) 691 ptrdiff_t pos, ptrdiff_t pos_byte)
692{ 692{
693 int len, combining_bytes; 693 int len, combining_bytes;
694 const unsigned char *p; 694 const unsigned char *p;
@@ -733,11 +733,11 @@ count_combining_before (const unsigned char *string, EMACS_INT length,
733 733
734int 734int
735count_combining_after (const unsigned char *string, 735count_combining_after (const unsigned char *string,
736 EMACS_INT length, EMACS_INT pos, EMACS_INT pos_byte) 736 ptrdiff_t length, ptrdiff_t pos, ptrdiff_t pos_byte)
737{ 737{
738 EMACS_INT opos_byte = pos_byte; 738 ptrdiff_t opos_byte = pos_byte;
739 EMACS_INT i; 739 ptrdiff_t i;
740 EMACS_INT bytes; 740 ptrdiff_t bytes;
741 unsigned char *bufp; 741 unsigned char *bufp;
742 742
743 if (NILP (current_buffer->enable_multibyte_characters)) 743 if (NILP (current_buffer->enable_multibyte_characters))
@@ -797,7 +797,7 @@ count_combining_after (const unsigned char *string,
797 797
798void 798void
799insert_1_both (const char *string, 799insert_1_both (const char *string,
800 EMACS_INT nchars, EMACS_INT nbytes, 800 ptrdiff_t nchars, ptrdiff_t nbytes,
801 int inherit, int prepare, int before_markers) 801 int inherit, int prepare, int before_markers)
802{ 802{
803 if (nchars == 0) 803 if (nchars == 0)
@@ -875,10 +875,10 @@ insert_1_both (const char *string,
875 without insert noticing. */ 875 without insert noticing. */
876 876
877void 877void
878insert_from_string (Lisp_Object string, EMACS_INT pos, EMACS_INT pos_byte, 878insert_from_string (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
879 EMACS_INT length, EMACS_INT length_byte, int inherit) 879 ptrdiff_t length, ptrdiff_t length_byte, int inherit)
880{ 880{
881 EMACS_INT opoint = PT; 881 ptrdiff_t opoint = PT;
882 882
883 if (SCHARS (string) == 0) 883 if (SCHARS (string) == 0)
884 return; 884 return;
@@ -894,11 +894,11 @@ insert_from_string (Lisp_Object string, EMACS_INT pos, EMACS_INT pos_byte,
894 894
895void 895void
896insert_from_string_before_markers (Lisp_Object string, 896insert_from_string_before_markers (Lisp_Object string,
897 EMACS_INT pos, EMACS_INT pos_byte, 897 ptrdiff_t pos, ptrdiff_t pos_byte,
898 EMACS_INT length, EMACS_INT length_byte, 898 ptrdiff_t length, ptrdiff_t length_byte,
899 int inherit) 899 int inherit)
900{ 900{
901 EMACS_INT opoint = PT; 901 ptrdiff_t opoint = PT;
902 902
903 if (SCHARS (string) == 0) 903 if (SCHARS (string) == 0)
904 return; 904 return;
@@ -912,12 +912,12 @@ insert_from_string_before_markers (Lisp_Object string,
912/* Subroutine of the insertion functions above. */ 912/* Subroutine of the insertion functions above. */
913 913
914static void 914static void
915insert_from_string_1 (Lisp_Object string, EMACS_INT pos, EMACS_INT pos_byte, 915insert_from_string_1 (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
916 EMACS_INT nchars, EMACS_INT nbytes, 916 ptrdiff_t nchars, ptrdiff_t nbytes,
917 int inherit, int before_markers) 917 int inherit, int before_markers)
918{ 918{
919 struct gcpro gcpro1; 919 struct gcpro gcpro1;
920 EMACS_INT outgoing_nbytes = nbytes; 920 ptrdiff_t outgoing_nbytes = nbytes;
921 INTERVAL intervals; 921 INTERVAL intervals;
922 922
923 /* Make OUTGOING_NBYTES describe the text 923 /* Make OUTGOING_NBYTES describe the text
@@ -1004,7 +1004,7 @@ insert_from_string_1 (Lisp_Object string, EMACS_INT pos, EMACS_INT pos_byte,
1004 starting at GPT_ADDR. */ 1004 starting at GPT_ADDR. */
1005 1005
1006void 1006void
1007insert_from_gap (EMACS_INT nchars, EMACS_INT nbytes) 1007insert_from_gap (ptrdiff_t nchars, ptrdiff_t nbytes)
1008{ 1008{
1009 if (NILP (BVAR (current_buffer, enable_multibyte_characters))) 1009 if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
1010 nchars = nbytes; 1010 nchars = nbytes;
@@ -1050,9 +1050,9 @@ insert_from_gap (EMACS_INT nchars, EMACS_INT nbytes)
1050 1050
1051void 1051void
1052insert_from_buffer (struct buffer *buf, 1052insert_from_buffer (struct buffer *buf,
1053 EMACS_INT charpos, EMACS_INT nchars, int inherit) 1053 ptrdiff_t charpos, ptrdiff_t nchars, int inherit)
1054{ 1054{
1055 EMACS_INT opoint = PT; 1055 ptrdiff_t opoint = PT;
1056 1056
1057 insert_from_buffer_1 (buf, charpos, nchars, inherit); 1057 insert_from_buffer_1 (buf, charpos, nchars, inherit);
1058 signal_after_change (opoint, 0, PT - opoint); 1058 signal_after_change (opoint, 0, PT - opoint);
@@ -1061,13 +1061,13 @@ insert_from_buffer (struct buffer *buf,
1061 1061
1062static void 1062static void
1063insert_from_buffer_1 (struct buffer *buf, 1063insert_from_buffer_1 (struct buffer *buf,
1064 EMACS_INT from, EMACS_INT nchars, int inherit) 1064 ptrdiff_t from, ptrdiff_t nchars, int inherit)
1065{ 1065{
1066 EMACS_INT chunk, chunk_expanded; 1066 ptrdiff_t chunk, chunk_expanded;
1067 EMACS_INT from_byte = buf_charpos_to_bytepos (buf, from); 1067 ptrdiff_t from_byte = buf_charpos_to_bytepos (buf, from);
1068 EMACS_INT to_byte = buf_charpos_to_bytepos (buf, from + nchars); 1068 ptrdiff_t to_byte = buf_charpos_to_bytepos (buf, from + nchars);
1069 EMACS_INT incoming_nbytes = to_byte - from_byte; 1069 ptrdiff_t incoming_nbytes = to_byte - from_byte;
1070 EMACS_INT outgoing_nbytes = incoming_nbytes; 1070 ptrdiff_t outgoing_nbytes = incoming_nbytes;
1071 INTERVAL intervals; 1071 INTERVAL intervals;
1072 1072
1073 /* Make OUTGOING_NBYTES describe the text 1073 /* Make OUTGOING_NBYTES describe the text
@@ -1077,8 +1077,8 @@ insert_from_buffer_1 (struct buffer *buf,
1077 outgoing_nbytes = nchars; 1077 outgoing_nbytes = nchars;
1078 else if (NILP (BVAR (buf, enable_multibyte_characters))) 1078 else if (NILP (BVAR (buf, enable_multibyte_characters)))
1079 { 1079 {
1080 EMACS_INT outgoing_before_gap = 0; 1080 ptrdiff_t outgoing_before_gap = 0;
1081 EMACS_INT outgoing_after_gap = 0; 1081 ptrdiff_t outgoing_after_gap = 0;
1082 1082
1083 if (from < BUF_GPT (buf)) 1083 if (from < BUF_GPT (buf))
1084 { 1084 {
@@ -1195,10 +1195,10 @@ insert_from_buffer_1 (struct buffer *buf,
1195 PREV_TEXT nil means the new text was just inserted. */ 1195 PREV_TEXT nil means the new text was just inserted. */
1196 1196
1197static void 1197static void
1198adjust_after_replace (EMACS_INT from, EMACS_INT from_byte, 1198adjust_after_replace (ptrdiff_t from, ptrdiff_t from_byte,
1199 Lisp_Object prev_text, EMACS_INT len, EMACS_INT len_byte) 1199 Lisp_Object prev_text, ptrdiff_t len, ptrdiff_t len_byte)
1200{ 1200{
1201 EMACS_INT nchars_del = 0, nbytes_del = 0; 1201 ptrdiff_t nchars_del = 0, nbytes_del = 0;
1202 1202
1203#ifdef BYTE_COMBINING_DEBUG 1203#ifdef BYTE_COMBINING_DEBUG
1204 if (count_combining_before (GPT_ADDR, len_byte, from, from_byte) 1204 if (count_combining_before (GPT_ADDR, len_byte, from, from_byte)
@@ -1263,10 +1263,10 @@ adjust_after_replace (EMACS_INT from, EMACS_INT from_byte,
1263 - FROM) may be incorrect, the correct length is NEWLEN. */ 1263 - FROM) may be incorrect, the correct length is NEWLEN. */
1264 1264
1265void 1265void
1266adjust_after_insert (EMACS_INT from, EMACS_INT from_byte, 1266adjust_after_insert (ptrdiff_t from, ptrdiff_t from_byte,
1267 EMACS_INT to, EMACS_INT to_byte, EMACS_INT newlen) 1267 ptrdiff_t to, ptrdiff_t to_byte, ptrdiff_t newlen)
1268{ 1268{
1269 EMACS_INT len = to - from, len_byte = to_byte - from_byte; 1269 ptrdiff_t len = to - from, len_byte = to_byte - from_byte;
1270 1270
1271 if (GPT != to) 1271 if (GPT != to)
1272 move_gap_both (to, to_byte); 1272 move_gap_both (to, to_byte);
@@ -1290,16 +1290,16 @@ adjust_after_insert (EMACS_INT from, EMACS_INT from_byte,
1290 But if MARKERS is 0, don't relocate markers. */ 1290 But if MARKERS is 0, don't relocate markers. */
1291 1291
1292void 1292void
1293replace_range (EMACS_INT from, EMACS_INT to, Lisp_Object new, 1293replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new,
1294 int prepare, int inherit, int markers) 1294 int prepare, int inherit, int markers)
1295{ 1295{
1296 EMACS_INT inschars = SCHARS (new); 1296 ptrdiff_t inschars = SCHARS (new);
1297 EMACS_INT insbytes = SBYTES (new); 1297 ptrdiff_t insbytes = SBYTES (new);
1298 EMACS_INT from_byte, to_byte; 1298 ptrdiff_t from_byte, to_byte;
1299 EMACS_INT nbytes_del, nchars_del; 1299 ptrdiff_t nbytes_del, nchars_del;
1300 struct gcpro gcpro1; 1300 struct gcpro gcpro1;
1301 INTERVAL intervals; 1301 INTERVAL intervals;
1302 EMACS_INT outgoing_insbytes = insbytes; 1302 ptrdiff_t outgoing_insbytes = insbytes;
1303 Lisp_Object deletion; 1303 Lisp_Object deletion;
1304 1304
1305 CHECK_MARKERS (); 1305 CHECK_MARKERS ();
@@ -1309,7 +1309,7 @@ replace_range (EMACS_INT from, EMACS_INT to, Lisp_Object new,
1309 1309
1310 if (prepare) 1310 if (prepare)
1311 { 1311 {
1312 EMACS_INT range_length = to - from; 1312 ptrdiff_t range_length = to - from;
1313 prepare_to_modify_buffer (from, to, &from); 1313 prepare_to_modify_buffer (from, to, &from);
1314 to = from + range_length; 1314 to = from + range_length;
1315 } 1315 }
@@ -1464,12 +1464,12 @@ replace_range (EMACS_INT from, EMACS_INT to, Lisp_Object new,
1464 prepare_to_modify_buffer and never call signal_after_change. */ 1464 prepare_to_modify_buffer and never call signal_after_change. */
1465 1465
1466void 1466void
1467replace_range_2 (EMACS_INT from, EMACS_INT from_byte, 1467replace_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
1468 EMACS_INT to, EMACS_INT to_byte, 1468 ptrdiff_t to, ptrdiff_t to_byte,
1469 const char *ins, EMACS_INT inschars, EMACS_INT insbytes, 1469 const char *ins, ptrdiff_t inschars, ptrdiff_t insbytes,
1470 int markers) 1470 int markers)
1471{ 1471{
1472 EMACS_INT nbytes_del, nchars_del; 1472 ptrdiff_t nbytes_del, nchars_del;
1473 1473
1474 CHECK_MARKERS (); 1474 CHECK_MARKERS ();
1475 1475
@@ -1571,7 +1571,7 @@ replace_range_2 (EMACS_INT from, EMACS_INT from_byte,
1571 If TO comes before FROM, we delete nothing. */ 1571 If TO comes before FROM, we delete nothing. */
1572 1572
1573void 1573void
1574del_range (EMACS_INT from, EMACS_INT to) 1574del_range (ptrdiff_t from, ptrdiff_t to)
1575{ 1575{
1576 del_range_1 (from, to, 1, 0); 1576 del_range_1 (from, to, 1, 0);
1577} 1577}
@@ -1580,9 +1580,9 @@ del_range (EMACS_INT from, EMACS_INT to)
1580 RET_STRING says to return the deleted text. */ 1580 RET_STRING says to return the deleted text. */
1581 1581
1582Lisp_Object 1582Lisp_Object
1583del_range_1 (EMACS_INT from, EMACS_INT to, int prepare, int ret_string) 1583del_range_1 (ptrdiff_t from, ptrdiff_t to, int prepare, int ret_string)
1584{ 1584{
1585 EMACS_INT from_byte, to_byte; 1585 ptrdiff_t from_byte, to_byte;
1586 Lisp_Object deletion; 1586 Lisp_Object deletion;
1587 struct gcpro gcpro1; 1587 struct gcpro gcpro1;
1588 1588
@@ -1597,7 +1597,7 @@ del_range_1 (EMACS_INT from, EMACS_INT to, int prepare, int ret_string)
1597 1597
1598 if (prepare) 1598 if (prepare)
1599 { 1599 {
1600 EMACS_INT range_length = to - from; 1600 ptrdiff_t range_length = to - from;
1601 prepare_to_modify_buffer (from, to, &from); 1601 prepare_to_modify_buffer (from, to, &from);
1602 to = min (ZV, from + range_length); 1602 to = min (ZV, from + range_length);
1603 } 1603 }
@@ -1616,9 +1616,9 @@ del_range_1 (EMACS_INT from, EMACS_INT to, int prepare, int ret_string)
1616/* Like del_range_1 but args are byte positions, not char positions. */ 1616/* Like del_range_1 but args are byte positions, not char positions. */
1617 1617
1618void 1618void
1619del_range_byte (EMACS_INT from_byte, EMACS_INT to_byte, int prepare) 1619del_range_byte (ptrdiff_t from_byte, ptrdiff_t to_byte, int prepare)
1620{ 1620{
1621 EMACS_INT from, to; 1621 ptrdiff_t from, to;
1622 1622
1623 /* Make args be valid */ 1623 /* Make args be valid */
1624 if (from_byte < BEGV_BYTE) 1624 if (from_byte < BEGV_BYTE)
@@ -1634,8 +1634,8 @@ del_range_byte (EMACS_INT from_byte, EMACS_INT to_byte, int prepare)
1634 1634
1635 if (prepare) 1635 if (prepare)
1636 { 1636 {
1637 EMACS_INT old_from = from, old_to = Z - to; 1637 ptrdiff_t old_from = from, old_to = Z - to;
1638 EMACS_INT range_length = to - from; 1638 ptrdiff_t range_length = to - from;
1639 prepare_to_modify_buffer (from, to, &from); 1639 prepare_to_modify_buffer (from, to, &from);
1640 to = from + range_length; 1640 to = from + range_length;
1641 1641
@@ -1659,8 +1659,8 @@ del_range_byte (EMACS_INT from_byte, EMACS_INT to_byte, int prepare)
1659 and bytepos. */ 1659 and bytepos. */
1660 1660
1661void 1661void
1662del_range_both (EMACS_INT from, EMACS_INT from_byte, 1662del_range_both (ptrdiff_t from, ptrdiff_t from_byte,
1663 EMACS_INT to, EMACS_INT to_byte, int prepare) 1663 ptrdiff_t to, ptrdiff_t to_byte, int prepare)
1664{ 1664{
1665 /* Make args be valid */ 1665 /* Make args be valid */
1666 if (from_byte < BEGV_BYTE) 1666 if (from_byte < BEGV_BYTE)
@@ -1678,8 +1678,8 @@ del_range_both (EMACS_INT from, EMACS_INT from_byte,
1678 1678
1679 if (prepare) 1679 if (prepare)
1680 { 1680 {
1681 EMACS_INT old_from = from, old_to = Z - to; 1681 ptrdiff_t old_from = from, old_to = Z - to;
1682 EMACS_INT range_length = to - from; 1682 ptrdiff_t range_length = to - from;
1683 prepare_to_modify_buffer (from, to, &from); 1683 prepare_to_modify_buffer (from, to, &from);
1684 to = from + range_length; 1684 to = from + range_length;
1685 1685
@@ -1705,10 +1705,10 @@ del_range_both (EMACS_INT from, EMACS_INT from_byte,
1705 If RET_STRING is true, the deleted area is returned as a string. */ 1705 If RET_STRING is true, the deleted area is returned as a string. */
1706 1706
1707Lisp_Object 1707Lisp_Object
1708del_range_2 (EMACS_INT from, EMACS_INT from_byte, 1708del_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
1709 EMACS_INT to, EMACS_INT to_byte, int ret_string) 1709 ptrdiff_t to, ptrdiff_t to_byte, int ret_string)
1710{ 1710{
1711 register EMACS_INT nbytes_del, nchars_del; 1711 register ptrdiff_t nbytes_del, nchars_del;
1712 Lisp_Object deletion; 1712 Lisp_Object deletion;
1713 1713
1714 CHECK_MARKERS (); 1714 CHECK_MARKERS ();
@@ -1792,7 +1792,7 @@ del_range_2 (EMACS_INT from, EMACS_INT from_byte,
1792 Otherwise set CHARS_MODIFF to the new value of MODIFF. */ 1792 Otherwise set CHARS_MODIFF to the new value of MODIFF. */
1793 1793
1794void 1794void
1795modify_region (struct buffer *buffer, EMACS_INT start, EMACS_INT end, 1795modify_region (struct buffer *buffer, ptrdiff_t start, ptrdiff_t end,
1796 int preserve_chars_modiff) 1796 int preserve_chars_modiff)
1797{ 1797{
1798 struct buffer *old_buffer = current_buffer; 1798 struct buffer *old_buffer = current_buffer;
@@ -1827,8 +1827,8 @@ modify_region (struct buffer *buffer, EMACS_INT start, EMACS_INT end,
1827 by holding its value temporarily in a marker. */ 1827 by holding its value temporarily in a marker. */
1828 1828
1829void 1829void
1830prepare_to_modify_buffer (EMACS_INT start, EMACS_INT end, 1830prepare_to_modify_buffer (ptrdiff_t start, ptrdiff_t end,
1831 EMACS_INT *preserve_ptr) 1831 ptrdiff_t *preserve_ptr)
1832{ 1832{
1833 struct buffer *base_buffer; 1833 struct buffer *base_buffer;
1834 1834
@@ -1889,8 +1889,8 @@ prepare_to_modify_buffer (EMACS_INT start, EMACS_INT end,
1889 : (!NILP (Vselect_active_regions) 1889 : (!NILP (Vselect_active_regions)
1890 && !NILP (Vtransient_mark_mode)))) 1890 && !NILP (Vtransient_mark_mode))))
1891 { 1891 {
1892 EMACS_INT b = XMARKER (BVAR (current_buffer, mark))->charpos; 1892 ptrdiff_t b = XMARKER (BVAR (current_buffer, mark))->charpos;
1893 EMACS_INT e = PT; 1893 ptrdiff_t e = PT;
1894 if (b < e) 1894 if (b < e)
1895 Vsaved_region_selection = make_buffer_string (b, e, 0); 1895 Vsaved_region_selection = make_buffer_string (b, e, 0);
1896 else if (b > e) 1896 else if (b > e)
@@ -1958,14 +1958,14 @@ reset_var_on_error (Lisp_Object val)
1958 by holding its value temporarily in a marker. */ 1958 by holding its value temporarily in a marker. */
1959 1959
1960static void 1960static void
1961signal_before_change (EMACS_INT start_int, EMACS_INT end_int, 1961signal_before_change (ptrdiff_t start_int, ptrdiff_t end_int,
1962 EMACS_INT *preserve_ptr) 1962 ptrdiff_t *preserve_ptr)
1963{ 1963{
1964 Lisp_Object start, end; 1964 Lisp_Object start, end;
1965 Lisp_Object start_marker, end_marker; 1965 Lisp_Object start_marker, end_marker;
1966 Lisp_Object preserve_marker; 1966 Lisp_Object preserve_marker;
1967 struct gcpro gcpro1, gcpro2, gcpro3; 1967 struct gcpro gcpro1, gcpro2, gcpro3;
1968 int count = SPECPDL_INDEX (); 1968 ptrdiff_t count = SPECPDL_INDEX ();
1969 1969
1970 if (inhibit_modification_hooks) 1970 if (inhibit_modification_hooks)
1971 return; 1971 return;
@@ -2036,9 +2036,9 @@ signal_before_change (EMACS_INT start_int, EMACS_INT end_int,
2036 after the change. */ 2036 after the change. */
2037 2037
2038void 2038void
2039signal_after_change (EMACS_INT charpos, EMACS_INT lendel, EMACS_INT lenins) 2039signal_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins)
2040{ 2040{
2041 int count = SPECPDL_INDEX (); 2041 ptrdiff_t count = SPECPDL_INDEX ();
2042 if (inhibit_modification_hooks) 2042 if (inhibit_modification_hooks)
2043 return; 2043 return;
2044 2044
@@ -2119,9 +2119,9 @@ DEFUN ("combine-after-change-execute", Fcombine_after_change_execute,
2119 doc: /* This function is for use internally in `combine-after-change-calls'. */) 2119 doc: /* This function is for use internally in `combine-after-change-calls'. */)
2120 (void) 2120 (void)
2121{ 2121{
2122 int count = SPECPDL_INDEX (); 2122 ptrdiff_t count = SPECPDL_INDEX ();
2123 EMACS_INT beg, end, change; 2123 ptrdiff_t beg, end, change;
2124 EMACS_INT begpos, endpos; 2124 ptrdiff_t begpos, endpos;
2125 Lisp_Object tail; 2125 Lisp_Object tail;
2126 2126
2127 if (NILP (combine_after_change_list)) 2127 if (NILP (combine_after_change_list))
@@ -2155,7 +2155,7 @@ DEFUN ("combine-after-change-execute", Fcombine_after_change_execute,
2155 tail = XCDR (tail)) 2155 tail = XCDR (tail))
2156 { 2156 {
2157 Lisp_Object elt; 2157 Lisp_Object elt;
2158 EMACS_INT thisbeg, thisend, thischange; 2158 ptrdiff_t thisbeg, thisend, thischange;
2159 2159
2160 /* Extract the info from the next element. */ 2160 /* Extract the info from the next element. */
2161 elt = XCAR (tail); 2161 elt = XCAR (tail);