diff options
| author | Paul Eggert | 2011-09-21 10:41:20 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-09-21 10:41:20 -0700 |
| commit | d311d28c3f8a3c43e6ef33d68b852c5ea7f13239 (patch) | |
| tree | 84b390c8bd472074294a31d51e790437f0a9a75d /src/editfns.c | |
| parent | 4768be09c9866add356a0a9b47ecd42346442b9f (diff) | |
| download | emacs-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/editfns.c')
| -rw-r--r-- | src/editfns.c | 209 |
1 files changed, 99 insertions, 110 deletions
diff --git a/src/editfns.c b/src/editfns.c index 3dd58377ada..ac9c20ced65 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -86,7 +86,7 @@ extern Lisp_Object w32_get_internal_run_time (void); | |||
| 86 | 86 | ||
| 87 | static void time_overflow (void) NO_RETURN; | 87 | static void time_overflow (void) NO_RETURN; |
| 88 | static int tm_diff (struct tm *, struct tm *); | 88 | static int tm_diff (struct tm *, struct tm *); |
| 89 | static void update_buffer_properties (EMACS_INT, EMACS_INT); | 89 | static void update_buffer_properties (ptrdiff_t, ptrdiff_t); |
| 90 | 90 | ||
| 91 | static Lisp_Object Qbuffer_access_fontify_functions; | 91 | static Lisp_Object Qbuffer_access_fontify_functions; |
| 92 | static Lisp_Object Fuser_full_name (Lisp_Object); | 92 | static Lisp_Object Fuser_full_name (Lisp_Object); |
| @@ -146,8 +146,14 @@ init_editfns (void) | |||
| 146 | /* If the user name claimed in the environment vars differs from | 146 | /* If the user name claimed in the environment vars differs from |
| 147 | the real uid, use the claimed name to find the full name. */ | 147 | the real uid, use the claimed name to find the full name. */ |
| 148 | tem = Fstring_equal (Vuser_login_name, Vuser_real_login_name); | 148 | tem = Fstring_equal (Vuser_login_name, Vuser_real_login_name); |
| 149 | Vuser_full_name = Fuser_full_name (NILP (tem)? make_number (geteuid ()) | 149 | if (! NILP (tem)) |
| 150 | : Vuser_login_name); | 150 | tem = Vuser_login_name; |
| 151 | else | ||
| 152 | { | ||
| 153 | uid_t euid = geteuid (); | ||
| 154 | tem = make_fixnum_or_float (euid); | ||
| 155 | } | ||
| 156 | Vuser_full_name = Fuser_full_name (tem); | ||
| 151 | 157 | ||
| 152 | p = getenv ("NAME"); | 158 | p = getenv ("NAME"); |
| 153 | if (p) | 159 | if (p) |
| @@ -212,7 +218,7 @@ DEFUN ("string-to-char", Fstring_to_char, Sstring_to_char, 1, 1, 0, | |||
| 212 | } | 218 | } |
| 213 | 219 | ||
| 214 | static Lisp_Object | 220 | static Lisp_Object |
| 215 | buildmark (EMACS_INT charpos, EMACS_INT bytepos) | 221 | buildmark (ptrdiff_t charpos, ptrdiff_t bytepos) |
| 216 | { | 222 | { |
| 217 | register Lisp_Object mark; | 223 | register Lisp_Object mark; |
| 218 | mark = Fmake_marker (); | 224 | mark = Fmake_marker (); |
| @@ -237,17 +243,6 @@ DEFUN ("point-marker", Fpoint_marker, Spoint_marker, 0, 0, 0, | |||
| 237 | return buildmark (PT, PT_BYTE); | 243 | return buildmark (PT, PT_BYTE); |
| 238 | } | 244 | } |
| 239 | 245 | ||
| 240 | EMACS_INT | ||
| 241 | clip_to_bounds (EMACS_INT lower, EMACS_INT num, EMACS_INT upper) | ||
| 242 | { | ||
| 243 | if (num < lower) | ||
| 244 | return lower; | ||
| 245 | else if (num > upper) | ||
| 246 | return upper; | ||
| 247 | else | ||
| 248 | return num; | ||
| 249 | } | ||
| 250 | |||
| 251 | DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", | 246 | DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", |
| 252 | doc: /* Set point to POSITION, a number or marker. | 247 | doc: /* Set point to POSITION, a number or marker. |
| 253 | Beginning of buffer is position (point-min), end is (point-max). | 248 | Beginning of buffer is position (point-min), end is (point-max). |
| @@ -255,7 +250,7 @@ Beginning of buffer is position (point-min), end is (point-max). | |||
| 255 | The return value is POSITION. */) | 250 | The return value is POSITION. */) |
| 256 | (register Lisp_Object position) | 251 | (register Lisp_Object position) |
| 257 | { | 252 | { |
| 258 | EMACS_INT pos; | 253 | ptrdiff_t pos; |
| 259 | 254 | ||
| 260 | if (MARKERP (position) | 255 | if (MARKERP (position) |
| 261 | && current_buffer == XMARKER (position)->buffer) | 256 | && current_buffer == XMARKER (position)->buffer) |
| @@ -335,7 +330,7 @@ overlays_around (EMACS_INT pos, Lisp_Object *vec, ptrdiff_t len) | |||
| 335 | { | 330 | { |
| 336 | Lisp_Object overlay, start, end; | 331 | Lisp_Object overlay, start, end; |
| 337 | struct Lisp_Overlay *tail; | 332 | struct Lisp_Overlay *tail; |
| 338 | EMACS_INT startpos, endpos; | 333 | ptrdiff_t startpos, endpos; |
| 339 | ptrdiff_t idx = 0; | 334 | ptrdiff_t idx = 0; |
| 340 | 335 | ||
| 341 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 336 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
| @@ -484,7 +479,7 @@ get_pos_property (Lisp_Object position, register Lisp_Object prop, Lisp_Object o | |||
| 484 | static void | 479 | static void |
| 485 | find_field (Lisp_Object pos, Lisp_Object merge_at_boundary, | 480 | find_field (Lisp_Object pos, Lisp_Object merge_at_boundary, |
| 486 | Lisp_Object beg_limit, | 481 | Lisp_Object beg_limit, |
| 487 | EMACS_INT *beg, Lisp_Object end_limit, EMACS_INT *end) | 482 | ptrdiff_t *beg, Lisp_Object end_limit, ptrdiff_t *end) |
| 488 | { | 483 | { |
| 489 | /* Fields right before and after the point. */ | 484 | /* Fields right before and after the point. */ |
| 490 | Lisp_Object before_field, after_field; | 485 | Lisp_Object before_field, after_field; |
| @@ -600,7 +595,7 @@ A field is a region of text with the same `field' property. | |||
| 600 | If POS is nil, the value of point is used for POS. */) | 595 | If POS is nil, the value of point is used for POS. */) |
| 601 | (Lisp_Object pos) | 596 | (Lisp_Object pos) |
| 602 | { | 597 | { |
| 603 | EMACS_INT beg, end; | 598 | ptrdiff_t beg, end; |
| 604 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); | 599 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); |
| 605 | if (beg != end) | 600 | if (beg != end) |
| 606 | del_range (beg, end); | 601 | del_range (beg, end); |
| @@ -613,7 +608,7 @@ A field is a region of text with the same `field' property. | |||
| 613 | If POS is nil, the value of point is used for POS. */) | 608 | If POS is nil, the value of point is used for POS. */) |
| 614 | (Lisp_Object pos) | 609 | (Lisp_Object pos) |
| 615 | { | 610 | { |
| 616 | EMACS_INT beg, end; | 611 | ptrdiff_t beg, end; |
| 617 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); | 612 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); |
| 618 | return make_buffer_string (beg, end, 1); | 613 | return make_buffer_string (beg, end, 1); |
| 619 | } | 614 | } |
| @@ -624,7 +619,7 @@ A field is a region of text with the same `field' property. | |||
| 624 | If POS is nil, the value of point is used for POS. */) | 619 | If POS is nil, the value of point is used for POS. */) |
| 625 | (Lisp_Object pos) | 620 | (Lisp_Object pos) |
| 626 | { | 621 | { |
| 627 | EMACS_INT beg, end; | 622 | ptrdiff_t beg, end; |
| 628 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); | 623 | find_field (pos, Qnil, Qnil, &beg, Qnil, &end); |
| 629 | return make_buffer_string (beg, end, 0); | 624 | return make_buffer_string (beg, end, 0); |
| 630 | } | 625 | } |
| @@ -639,7 +634,7 @@ If LIMIT is non-nil, it is a buffer position; if the beginning of the field | |||
| 639 | is before LIMIT, then LIMIT will be returned instead. */) | 634 | is before LIMIT, then LIMIT will be returned instead. */) |
| 640 | (Lisp_Object pos, Lisp_Object escape_from_edge, Lisp_Object limit) | 635 | (Lisp_Object pos, Lisp_Object escape_from_edge, Lisp_Object limit) |
| 641 | { | 636 | { |
| 642 | EMACS_INT beg; | 637 | ptrdiff_t beg; |
| 643 | find_field (pos, escape_from_edge, limit, &beg, Qnil, 0); | 638 | find_field (pos, escape_from_edge, limit, &beg, Qnil, 0); |
| 644 | return make_number (beg); | 639 | return make_number (beg); |
| 645 | } | 640 | } |
| @@ -654,7 +649,7 @@ If LIMIT is non-nil, it is a buffer position; if the end of the field | |||
| 654 | is after LIMIT, then LIMIT will be returned instead. */) | 649 | is after LIMIT, then LIMIT will be returned instead. */) |
| 655 | (Lisp_Object pos, Lisp_Object escape_from_edge, Lisp_Object limit) | 650 | (Lisp_Object pos, Lisp_Object escape_from_edge, Lisp_Object limit) |
| 656 | { | 651 | { |
| 657 | EMACS_INT end; | 652 | ptrdiff_t end; |
| 658 | find_field (pos, escape_from_edge, Qnil, 0, limit, &end); | 653 | find_field (pos, escape_from_edge, Qnil, 0, limit, &end); |
| 659 | return make_number (end); | 654 | return make_number (end); |
| 660 | } | 655 | } |
| @@ -689,7 +684,7 @@ Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. */) | |||
| 689 | (Lisp_Object new_pos, Lisp_Object old_pos, Lisp_Object escape_from_edge, Lisp_Object only_in_line, Lisp_Object inhibit_capture_property) | 684 | (Lisp_Object new_pos, Lisp_Object old_pos, Lisp_Object escape_from_edge, Lisp_Object only_in_line, Lisp_Object inhibit_capture_property) |
| 690 | { | 685 | { |
| 691 | /* If non-zero, then the original point, before re-positioning. */ | 686 | /* If non-zero, then the original point, before re-positioning. */ |
| 692 | EMACS_INT orig_point = 0; | 687 | ptrdiff_t orig_point = 0; |
| 693 | int fwd; | 688 | int fwd; |
| 694 | Lisp_Object prev_old, prev_new; | 689 | Lisp_Object prev_old, prev_new; |
| 695 | 690 | ||
| @@ -703,10 +698,10 @@ Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. */) | |||
| 703 | CHECK_NUMBER_COERCE_MARKER (new_pos); | 698 | CHECK_NUMBER_COERCE_MARKER (new_pos); |
| 704 | CHECK_NUMBER_COERCE_MARKER (old_pos); | 699 | CHECK_NUMBER_COERCE_MARKER (old_pos); |
| 705 | 700 | ||
| 706 | fwd = (XFASTINT (new_pos) > XFASTINT (old_pos)); | 701 | fwd = (XINT (new_pos) > XINT (old_pos)); |
| 707 | 702 | ||
| 708 | prev_old = make_number (XFASTINT (old_pos) - 1); | 703 | prev_old = make_number (XINT (old_pos) - 1); |
| 709 | prev_new = make_number (XFASTINT (new_pos) - 1); | 704 | prev_new = make_number (XINT (new_pos) - 1); |
| 710 | 705 | ||
| 711 | if (NILP (Vinhibit_field_text_motion) | 706 | if (NILP (Vinhibit_field_text_motion) |
| 712 | && !EQ (new_pos, old_pos) | 707 | && !EQ (new_pos, old_pos) |
| @@ -731,7 +726,7 @@ Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. */) | |||
| 731 | /* It is possible that NEW_POS is not within the same field as | 726 | /* It is possible that NEW_POS is not within the same field as |
| 732 | OLD_POS; try to move NEW_POS so that it is. */ | 727 | OLD_POS; try to move NEW_POS so that it is. */ |
| 733 | { | 728 | { |
| 734 | EMACS_INT shortage; | 729 | ptrdiff_t shortage; |
| 735 | Lisp_Object field_bound; | 730 | Lisp_Object field_bound; |
| 736 | 731 | ||
| 737 | if (fwd) | 732 | if (fwd) |
| @@ -786,8 +781,8 @@ boundaries bind `inhibit-field-text-motion' to t. | |||
| 786 | This function does not move point. */) | 781 | This function does not move point. */) |
| 787 | (Lisp_Object n) | 782 | (Lisp_Object n) |
| 788 | { | 783 | { |
| 789 | EMACS_INT orig, orig_byte, end; | 784 | ptrdiff_t orig, orig_byte, end; |
| 790 | int count = SPECPDL_INDEX (); | 785 | ptrdiff_t count = SPECPDL_INDEX (); |
| 791 | specbind (Qinhibit_point_motion_hooks, Qt); | 786 | specbind (Qinhibit_point_motion_hooks, Qt); |
| 792 | 787 | ||
| 793 | if (NILP (n)) | 788 | if (NILP (n)) |
| @@ -827,15 +822,17 @@ boundaries bind `inhibit-field-text-motion' to t. | |||
| 827 | This function does not move point. */) | 822 | This function does not move point. */) |
| 828 | (Lisp_Object n) | 823 | (Lisp_Object n) |
| 829 | { | 824 | { |
| 830 | EMACS_INT end_pos; | 825 | ptrdiff_t clipped_n; |
| 831 | EMACS_INT orig = PT; | 826 | ptrdiff_t end_pos; |
| 827 | ptrdiff_t orig = PT; | ||
| 832 | 828 | ||
| 833 | if (NILP (n)) | 829 | if (NILP (n)) |
| 834 | XSETFASTINT (n, 1); | 830 | XSETFASTINT (n, 1); |
| 835 | else | 831 | else |
| 836 | CHECK_NUMBER (n); | 832 | CHECK_NUMBER (n); |
| 837 | 833 | ||
| 838 | end_pos = find_before_next_newline (orig, 0, XINT (n) - (XINT (n) <= 0)); | 834 | clipped_n = clip_to_bounds (PTRDIFF_MIN + 1, XINT (n), PTRDIFF_MAX); |
| 835 | end_pos = find_before_next_newline (orig, 0, clipped_n - (clipped_n <= 0)); | ||
| 839 | 836 | ||
| 840 | /* Return END_POS constrained to the current input field. */ | 837 | /* Return END_POS constrained to the current input field. */ |
| 841 | return Fconstrain_to_field (make_number (end_pos), make_number (orig), | 838 | return Fconstrain_to_field (make_number (end_pos), make_number (orig), |
| @@ -962,7 +959,7 @@ usage: (save-excursion &rest BODY) */) | |||
| 962 | (Lisp_Object args) | 959 | (Lisp_Object args) |
| 963 | { | 960 | { |
| 964 | register Lisp_Object val; | 961 | register Lisp_Object val; |
| 965 | int count = SPECPDL_INDEX (); | 962 | ptrdiff_t count = SPECPDL_INDEX (); |
| 966 | 963 | ||
| 967 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); | 964 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); |
| 968 | 965 | ||
| @@ -977,7 +974,7 @@ usage: (save-current-buffer &rest BODY) */) | |||
| 977 | (Lisp_Object args) | 974 | (Lisp_Object args) |
| 978 | { | 975 | { |
| 979 | Lisp_Object val; | 976 | Lisp_Object val; |
| 980 | int count = SPECPDL_INDEX (); | 977 | ptrdiff_t count = SPECPDL_INDEX (); |
| 981 | 978 | ||
| 982 | record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); | 979 | record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); |
| 983 | 980 | ||
| @@ -1103,7 +1100,7 @@ At the beginning of the buffer or accessible region, return 0. */) | |||
| 1103 | XSETFASTINT (temp, 0); | 1100 | XSETFASTINT (temp, 0); |
| 1104 | else if (!NILP (BVAR (current_buffer, enable_multibyte_characters))) | 1101 | else if (!NILP (BVAR (current_buffer, enable_multibyte_characters))) |
| 1105 | { | 1102 | { |
| 1106 | EMACS_INT pos = PT_BYTE; | 1103 | ptrdiff_t pos = PT_BYTE; |
| 1107 | DEC_POS (pos); | 1104 | DEC_POS (pos); |
| 1108 | XSETFASTINT (temp, FETCH_CHAR (pos)); | 1105 | XSETFASTINT (temp, FETCH_CHAR (pos)); |
| 1109 | } | 1106 | } |
| @@ -1157,7 +1154,7 @@ POS is an integer or a marker and defaults to point. | |||
| 1157 | If POS is out of range, the value is nil. */) | 1154 | If POS is out of range, the value is nil. */) |
| 1158 | (Lisp_Object pos) | 1155 | (Lisp_Object pos) |
| 1159 | { | 1156 | { |
| 1160 | register EMACS_INT pos_byte; | 1157 | register ptrdiff_t pos_byte; |
| 1161 | 1158 | ||
| 1162 | if (NILP (pos)) | 1159 | if (NILP (pos)) |
| 1163 | { | 1160 | { |
| @@ -1190,7 +1187,7 @@ If POS is out of range, the value is nil. */) | |||
| 1190 | (Lisp_Object pos) | 1187 | (Lisp_Object pos) |
| 1191 | { | 1188 | { |
| 1192 | register Lisp_Object val; | 1189 | register Lisp_Object val; |
| 1193 | register EMACS_INT pos_byte; | 1190 | register ptrdiff_t pos_byte; |
| 1194 | 1191 | ||
| 1195 | if (NILP (pos)) | 1192 | if (NILP (pos)) |
| 1196 | { | 1193 | { |
| @@ -1277,14 +1274,7 @@ DEFUN ("user-uid", Fuser_uid, Suser_uid, 0, 0, 0, | |||
| 1277 | Value is an integer or a float, depending on the value. */) | 1274 | Value is an integer or a float, depending on the value. */) |
| 1278 | (void) | 1275 | (void) |
| 1279 | { | 1276 | { |
| 1280 | /* Assignment to EMACS_INT stops GCC whining about limited range of | 1277 | uid_t euid = geteuid (); |
| 1281 | data type. */ | ||
| 1282 | EMACS_INT euid = geteuid (); | ||
| 1283 | |||
| 1284 | /* Make sure we don't produce a negative UID due to signed integer | ||
| 1285 | overflow. */ | ||
| 1286 | if (euid < 0) | ||
| 1287 | return make_float (geteuid ()); | ||
| 1288 | return make_fixnum_or_float (euid); | 1278 | return make_fixnum_or_float (euid); |
| 1289 | } | 1279 | } |
| 1290 | 1280 | ||
| @@ -1293,14 +1283,7 @@ DEFUN ("user-real-uid", Fuser_real_uid, Suser_real_uid, 0, 0, 0, | |||
| 1293 | Value is an integer or a float, depending on the value. */) | 1283 | Value is an integer or a float, depending on the value. */) |
| 1294 | (void) | 1284 | (void) |
| 1295 | { | 1285 | { |
| 1296 | /* Assignment to EMACS_INT stops GCC whining about limited range of | 1286 | uid_t uid = getuid (); |
| 1297 | data type. */ | ||
| 1298 | EMACS_INT uid = getuid (); | ||
| 1299 | |||
| 1300 | /* Make sure we don't produce a negative UID due to signed integer | ||
| 1301 | overflow. */ | ||
| 1302 | if (uid < 0) | ||
| 1303 | return make_float (getuid ()); | ||
| 1304 | return make_fixnum_or_float (uid); | 1287 | return make_fixnum_or_float (uid); |
| 1305 | } | 1288 | } |
| 1306 | 1289 | ||
| @@ -1385,10 +1368,11 @@ get_system_name (void) | |||
| 1385 | } | 1368 | } |
| 1386 | 1369 | ||
| 1387 | DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0, | 1370 | DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0, |
| 1388 | doc: /* Return the process ID of Emacs, as an integer. */) | 1371 | doc: /* Return the process ID of Emacs, as a number. */) |
| 1389 | (void) | 1372 | (void) |
| 1390 | { | 1373 | { |
| 1391 | return make_number (getpid ()); | 1374 | pid_t pid = getpid (); |
| 1375 | return make_fixnum_or_float (pid); | ||
| 1392 | } | 1376 | } |
| 1393 | 1377 | ||
| 1394 | 1378 | ||
| @@ -1428,7 +1412,7 @@ hi_time (time_t t) | |||
| 1428 | } | 1412 | } |
| 1429 | 1413 | ||
| 1430 | /* Return the bottom 16 bits of the time T. */ | 1414 | /* Return the bottom 16 bits of the time T. */ |
| 1431 | static EMACS_INT | 1415 | static int |
| 1432 | lo_time (time_t t) | 1416 | lo_time (time_t t) |
| 1433 | { | 1417 | { |
| 1434 | return t & ((1 << 16) - 1); | 1418 | return t & ((1 << 16) - 1); |
| @@ -1546,6 +1530,8 @@ lisp_time_argument (Lisp_Object specified_time, time_t *result, int *usec) | |||
| 1546 | else | 1530 | else |
| 1547 | { | 1531 | { |
| 1548 | CHECK_NUMBER (usec_l); | 1532 | CHECK_NUMBER (usec_l); |
| 1533 | if (! (0 <= XINT (usec_l) && XINT (usec_l) < 1000000)) | ||
| 1534 | return 0; | ||
| 1549 | *usec = XINT (usec_l); | 1535 | *usec = XINT (usec_l); |
| 1550 | } | 1536 | } |
| 1551 | } | 1537 | } |
| @@ -1883,9 +1869,12 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */) | |||
| 1883 | tzstring = SSDATA (zone); | 1869 | tzstring = SSDATA (zone); |
| 1884 | else if (INTEGERP (zone)) | 1870 | else if (INTEGERP (zone)) |
| 1885 | { | 1871 | { |
| 1886 | int abszone = eabs (XINT (zone)); | 1872 | EMACS_INT abszone = eabs (XINT (zone)); |
| 1887 | sprintf (tzbuf, "XXX%s%d:%02d:%02d", "-" + (XINT (zone) < 0), | 1873 | EMACS_INT zone_hr = abszone / (60*60); |
| 1888 | abszone / (60*60), (abszone/60) % 60, abszone % 60); | 1874 | int zone_min = (abszone/60) % 60; |
| 1875 | int zone_sec = abszone % 60; | ||
| 1876 | sprintf (tzbuf, "XXX%s%"pI"d:%02d:%02d", "-" + (XINT (zone) < 0), | ||
| 1877 | zone_hr, zone_min, zone_sec); | ||
| 1889 | tzstring = tzbuf; | 1878 | tzstring = tzbuf; |
| 1890 | } | 1879 | } |
| 1891 | else | 1880 | else |
| @@ -2187,10 +2176,10 @@ set_time_zone_rule (const char *tzstring) | |||
| 2187 | 2176 | ||
| 2188 | static void | 2177 | static void |
| 2189 | general_insert_function (void (*insert_func) | 2178 | general_insert_function (void (*insert_func) |
| 2190 | (const char *, EMACS_INT), | 2179 | (const char *, ptrdiff_t), |
| 2191 | void (*insert_from_string_func) | 2180 | void (*insert_from_string_func) |
| 2192 | (Lisp_Object, EMACS_INT, EMACS_INT, | 2181 | (Lisp_Object, ptrdiff_t, ptrdiff_t, |
| 2193 | EMACS_INT, EMACS_INT, int), | 2182 | ptrdiff_t, ptrdiff_t, int), |
| 2194 | int inherit, ptrdiff_t nargs, Lisp_Object *args) | 2183 | int inherit, ptrdiff_t nargs, Lisp_Object *args) |
| 2195 | { | 2184 | { |
| 2196 | ptrdiff_t argnum; | 2185 | ptrdiff_t argnum; |
| @@ -2326,7 +2315,7 @@ from adjoining text, if those properties are sticky. */) | |||
| 2326 | (Lisp_Object character, Lisp_Object count, Lisp_Object inherit) | 2315 | (Lisp_Object character, Lisp_Object count, Lisp_Object inherit) |
| 2327 | { | 2316 | { |
| 2328 | int i, stringlen; | 2317 | int i, stringlen; |
| 2329 | register EMACS_INT n; | 2318 | register ptrdiff_t n; |
| 2330 | int c, len; | 2319 | int c, len; |
| 2331 | unsigned char str[MAX_MULTIBYTE_LENGTH]; | 2320 | unsigned char str[MAX_MULTIBYTE_LENGTH]; |
| 2332 | char string[4000]; | 2321 | char string[4000]; |
| @@ -2402,10 +2391,10 @@ from adjoining text, if those properties are sticky. */) | |||
| 2402 | buffer substrings. */ | 2391 | buffer substrings. */ |
| 2403 | 2392 | ||
| 2404 | Lisp_Object | 2393 | Lisp_Object |
| 2405 | make_buffer_string (EMACS_INT start, EMACS_INT end, int props) | 2394 | make_buffer_string (ptrdiff_t start, ptrdiff_t end, int props) |
| 2406 | { | 2395 | { |
| 2407 | EMACS_INT start_byte = CHAR_TO_BYTE (start); | 2396 | ptrdiff_t start_byte = CHAR_TO_BYTE (start); |
| 2408 | EMACS_INT end_byte = CHAR_TO_BYTE (end); | 2397 | ptrdiff_t end_byte = CHAR_TO_BYTE (end); |
| 2409 | 2398 | ||
| 2410 | return make_buffer_string_both (start, start_byte, end, end_byte, props); | 2399 | return make_buffer_string_both (start, start_byte, end, end_byte, props); |
| 2411 | } | 2400 | } |
| @@ -2426,8 +2415,8 @@ make_buffer_string (EMACS_INT start, EMACS_INT end, int props) | |||
| 2426 | buffer substrings. */ | 2415 | buffer substrings. */ |
| 2427 | 2416 | ||
| 2428 | Lisp_Object | 2417 | Lisp_Object |
| 2429 | make_buffer_string_both (EMACS_INT start, EMACS_INT start_byte, | 2418 | make_buffer_string_both (ptrdiff_t start, ptrdiff_t start_byte, |
| 2430 | EMACS_INT end, EMACS_INT end_byte, int props) | 2419 | ptrdiff_t end, ptrdiff_t end_byte, int props) |
| 2431 | { | 2420 | { |
| 2432 | Lisp_Object result, tem, tem1; | 2421 | Lisp_Object result, tem, tem1; |
| 2433 | 2422 | ||
| @@ -2460,7 +2449,7 @@ make_buffer_string_both (EMACS_INT start, EMACS_INT start_byte, | |||
| 2460 | in the current buffer, if necessary. */ | 2449 | in the current buffer, if necessary. */ |
| 2461 | 2450 | ||
| 2462 | static void | 2451 | static void |
| 2463 | update_buffer_properties (EMACS_INT start, EMACS_INT end) | 2452 | update_buffer_properties (ptrdiff_t start, ptrdiff_t end) |
| 2464 | { | 2453 | { |
| 2465 | /* If this buffer has some access functions, | 2454 | /* If this buffer has some access functions, |
| 2466 | call them, specifying the range of the buffer being accessed. */ | 2455 | call them, specifying the range of the buffer being accessed. */ |
| @@ -2499,7 +2488,7 @@ into the result string; if you don't want the text properties, | |||
| 2499 | use `buffer-substring-no-properties' instead. */) | 2488 | use `buffer-substring-no-properties' instead. */) |
| 2500 | (Lisp_Object start, Lisp_Object end) | 2489 | (Lisp_Object start, Lisp_Object end) |
| 2501 | { | 2490 | { |
| 2502 | register EMACS_INT b, e; | 2491 | register ptrdiff_t b, e; |
| 2503 | 2492 | ||
| 2504 | validate_region (&start, &end); | 2493 | validate_region (&start, &end); |
| 2505 | b = XINT (start); | 2494 | b = XINT (start); |
| @@ -2515,7 +2504,7 @@ The two arguments START and END are character positions; | |||
| 2515 | they can be in either order. */) | 2504 | they can be in either order. */) |
| 2516 | (Lisp_Object start, Lisp_Object end) | 2505 | (Lisp_Object start, Lisp_Object end) |
| 2517 | { | 2506 | { |
| 2518 | register EMACS_INT b, e; | 2507 | register ptrdiff_t b, e; |
| 2519 | 2508 | ||
| 2520 | validate_region (&start, &end); | 2509 | validate_region (&start, &end); |
| 2521 | b = XINT (start); | 2510 | b = XINT (start); |
| @@ -2599,8 +2588,8 @@ determines whether case is significant or ignored. */) | |||
| 2599 | register Lisp_Object trt | 2588 | register Lisp_Object trt |
| 2600 | = (!NILP (BVAR (current_buffer, case_fold_search)) | 2589 | = (!NILP (BVAR (current_buffer, case_fold_search)) |
| 2601 | ? BVAR (current_buffer, case_canon_table) : Qnil); | 2590 | ? BVAR (current_buffer, case_canon_table) : Qnil); |
| 2602 | EMACS_INT chars = 0; | 2591 | ptrdiff_t chars = 0; |
| 2603 | EMACS_INT i1, i2, i1_byte, i2_byte; | 2592 | ptrdiff_t i1, i2, i1_byte, i2_byte; |
| 2604 | 2593 | ||
| 2605 | /* Find the first buffer and its substring. */ | 2594 | /* Find the first buffer and its substring. */ |
| 2606 | 2595 | ||
| @@ -2761,21 +2750,21 @@ and don't mark the buffer as really changed. | |||
| 2761 | Both characters must have the same length of multi-byte form. */) | 2750 | Both characters must have the same length of multi-byte form. */) |
| 2762 | (Lisp_Object start, Lisp_Object end, Lisp_Object fromchar, Lisp_Object tochar, Lisp_Object noundo) | 2751 | (Lisp_Object start, Lisp_Object end, Lisp_Object fromchar, Lisp_Object tochar, Lisp_Object noundo) |
| 2763 | { | 2752 | { |
| 2764 | register EMACS_INT pos, pos_byte, stop, i, len, end_byte; | 2753 | register ptrdiff_t pos, pos_byte, stop, i, len, end_byte; |
| 2765 | /* Keep track of the first change in the buffer: | 2754 | /* Keep track of the first change in the buffer: |
| 2766 | if 0 we haven't found it yet. | 2755 | if 0 we haven't found it yet. |
| 2767 | if < 0 we've found it and we've run the before-change-function. | 2756 | if < 0 we've found it and we've run the before-change-function. |
| 2768 | if > 0 we've actually performed it and the value is its position. */ | 2757 | if > 0 we've actually performed it and the value is its position. */ |
| 2769 | EMACS_INT changed = 0; | 2758 | ptrdiff_t changed = 0; |
| 2770 | unsigned char fromstr[MAX_MULTIBYTE_LENGTH], tostr[MAX_MULTIBYTE_LENGTH]; | 2759 | unsigned char fromstr[MAX_MULTIBYTE_LENGTH], tostr[MAX_MULTIBYTE_LENGTH]; |
| 2771 | unsigned char *p; | 2760 | unsigned char *p; |
| 2772 | int count = SPECPDL_INDEX (); | 2761 | ptrdiff_t count = SPECPDL_INDEX (); |
| 2773 | #define COMBINING_NO 0 | 2762 | #define COMBINING_NO 0 |
| 2774 | #define COMBINING_BEFORE 1 | 2763 | #define COMBINING_BEFORE 1 |
| 2775 | #define COMBINING_AFTER 2 | 2764 | #define COMBINING_AFTER 2 |
| 2776 | #define COMBINING_BOTH (COMBINING_BEFORE | COMBINING_AFTER) | 2765 | #define COMBINING_BOTH (COMBINING_BEFORE | COMBINING_AFTER) |
| 2777 | int maybe_byte_combining = COMBINING_NO; | 2766 | int maybe_byte_combining = COMBINING_NO; |
| 2778 | EMACS_INT last_changed = 0; | 2767 | ptrdiff_t last_changed = 0; |
| 2779 | int multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 2768 | int multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 2780 | int fromc, toc; | 2769 | int fromc, toc; |
| 2781 | 2770 | ||
| @@ -2835,7 +2824,7 @@ Both characters must have the same length of multi-byte form. */) | |||
| 2835 | stop = min (stop, GPT_BYTE); | 2824 | stop = min (stop, GPT_BYTE); |
| 2836 | while (1) | 2825 | while (1) |
| 2837 | { | 2826 | { |
| 2838 | EMACS_INT pos_byte_next = pos_byte; | 2827 | ptrdiff_t pos_byte_next = pos_byte; |
| 2839 | 2828 | ||
| 2840 | if (pos_byte >= stop) | 2829 | if (pos_byte >= stop) |
| 2841 | { | 2830 | { |
| @@ -2938,7 +2927,7 @@ Both characters must have the same length of multi-byte form. */) | |||
| 2938 | } | 2927 | } |
| 2939 | 2928 | ||
| 2940 | 2929 | ||
| 2941 | static Lisp_Object check_translation (EMACS_INT, EMACS_INT, EMACS_INT, | 2930 | static Lisp_Object check_translation (ptrdiff_t, ptrdiff_t, ptrdiff_t, |
| 2942 | Lisp_Object); | 2931 | Lisp_Object); |
| 2943 | 2932 | ||
| 2944 | /* Helper function for Ftranslate_region_internal. | 2933 | /* Helper function for Ftranslate_region_internal. |
| @@ -2948,7 +2937,7 @@ static Lisp_Object check_translation (EMACS_INT, EMACS_INT, EMACS_INT, | |||
| 2948 | element is found, return it. Otherwise return Qnil. */ | 2937 | element is found, return it. Otherwise return Qnil. */ |
| 2949 | 2938 | ||
| 2950 | static Lisp_Object | 2939 | static Lisp_Object |
| 2951 | check_translation (EMACS_INT pos, EMACS_INT pos_byte, EMACS_INT end, | 2940 | check_translation (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t end, |
| 2952 | Lisp_Object val) | 2941 | Lisp_Object val) |
| 2953 | { | 2942 | { |
| 2954 | int buf_size = 16, buf_used = 0; | 2943 | int buf_size = 16, buf_used = 0; |
| @@ -2957,7 +2946,7 @@ check_translation (EMACS_INT pos, EMACS_INT pos_byte, EMACS_INT end, | |||
| 2957 | for (; CONSP (val); val = XCDR (val)) | 2946 | for (; CONSP (val); val = XCDR (val)) |
| 2958 | { | 2947 | { |
| 2959 | Lisp_Object elt; | 2948 | Lisp_Object elt; |
| 2960 | EMACS_INT len, i; | 2949 | ptrdiff_t len, i; |
| 2961 | 2950 | ||
| 2962 | elt = XCAR (val); | 2951 | elt = XCAR (val); |
| 2963 | if (! CONSP (elt)) | 2952 | if (! CONSP (elt)) |
| @@ -3010,8 +2999,8 @@ It returns the number of characters changed. */) | |||
| 3010 | register unsigned char *tt; /* Trans table. */ | 2999 | register unsigned char *tt; /* Trans table. */ |
| 3011 | register int nc; /* New character. */ | 3000 | register int nc; /* New character. */ |
| 3012 | int cnt; /* Number of changes made. */ | 3001 | int cnt; /* Number of changes made. */ |
| 3013 | EMACS_INT size; /* Size of translate table. */ | 3002 | ptrdiff_t size; /* Size of translate table. */ |
| 3014 | EMACS_INT pos, pos_byte, end_pos; | 3003 | ptrdiff_t pos, pos_byte, end_pos; |
| 3015 | int multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 3004 | int multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 3016 | int string_multibyte IF_LINT (= 0); | 3005 | int string_multibyte IF_LINT (= 0); |
| 3017 | 3006 | ||
| @@ -3289,7 +3278,7 @@ save_restriction_restore (Lisp_Object data) | |||
| 3289 | /* The restriction has changed from the saved one, so restore | 3278 | /* The restriction has changed from the saved one, so restore |
| 3290 | the saved restriction. */ | 3279 | the saved restriction. */ |
| 3291 | { | 3280 | { |
| 3292 | EMACS_INT pt = BUF_PT (buf); | 3281 | ptrdiff_t pt = BUF_PT (buf); |
| 3293 | 3282 | ||
| 3294 | SET_BUF_BEGV_BOTH (buf, beg->charpos, beg->bytepos); | 3283 | SET_BUF_BEGV_BOTH (buf, beg->charpos, beg->bytepos); |
| 3295 | SET_BUF_ZV_BOTH (buf, end->charpos, end->bytepos); | 3284 | SET_BUF_ZV_BOTH (buf, end->charpos, end->bytepos); |
| @@ -3347,7 +3336,7 @@ usage: (save-restriction &rest BODY) */) | |||
| 3347 | (Lisp_Object body) | 3336 | (Lisp_Object body) |
| 3348 | { | 3337 | { |
| 3349 | register Lisp_Object val; | 3338 | register Lisp_Object val; |
| 3350 | int count = SPECPDL_INDEX (); | 3339 | ptrdiff_t count = SPECPDL_INDEX (); |
| 3351 | 3340 | ||
| 3352 | record_unwind_protect (save_restriction_restore, save_restriction_save ()); | 3341 | record_unwind_protect (save_restriction_restore, save_restriction_save ()); |
| 3353 | val = Fprogn (body); | 3342 | val = Fprogn (body); |
| @@ -3565,12 +3554,12 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3565 | ptrdiff_t n; /* The number of the next arg to substitute */ | 3554 | ptrdiff_t n; /* The number of the next arg to substitute */ |
| 3566 | char initial_buffer[4000]; | 3555 | char initial_buffer[4000]; |
| 3567 | char *buf = initial_buffer; | 3556 | char *buf = initial_buffer; |
| 3568 | EMACS_INT bufsize = sizeof initial_buffer; | 3557 | ptrdiff_t bufsize = sizeof initial_buffer; |
| 3569 | EMACS_INT max_bufsize = STRING_BYTES_BOUND + 1; | 3558 | ptrdiff_t max_bufsize = STRING_BYTES_BOUND + 1; |
| 3570 | char *p; | 3559 | char *p; |
| 3571 | Lisp_Object buf_save_value IF_LINT (= {0}); | 3560 | Lisp_Object buf_save_value IF_LINT (= {0}); |
| 3572 | register char *format, *end, *format_start; | 3561 | register char *format, *end, *format_start; |
| 3573 | EMACS_INT formatlen, nchars; | 3562 | ptrdiff_t formatlen, nchars; |
| 3574 | /* Nonzero if the format is multibyte. */ | 3563 | /* Nonzero if the format is multibyte. */ |
| 3575 | int multibyte_format = 0; | 3564 | int multibyte_format = 0; |
| 3576 | /* Nonzero if the output should be a multibyte string, | 3565 | /* Nonzero if the output should be a multibyte string, |
| @@ -3597,7 +3586,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3597 | info[0] is unused. Unused elements have -1 for start. */ | 3586 | info[0] is unused. Unused elements have -1 for start. */ |
| 3598 | struct info | 3587 | struct info |
| 3599 | { | 3588 | { |
| 3600 | EMACS_INT start, end; | 3589 | ptrdiff_t start, end; |
| 3601 | int converted_to_string; | 3590 | int converted_to_string; |
| 3602 | int intervals; | 3591 | int intervals; |
| 3603 | } *info = 0; | 3592 | } *info = 0; |
| @@ -3654,7 +3643,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3654 | char *format0 = format; | 3643 | char *format0 = format; |
| 3655 | 3644 | ||
| 3656 | /* Bytes needed to represent the output of this conversion. */ | 3645 | /* Bytes needed to represent the output of this conversion. */ |
| 3657 | EMACS_INT convbytes; | 3646 | ptrdiff_t convbytes; |
| 3658 | 3647 | ||
| 3659 | if (*format == '%') | 3648 | if (*format == '%') |
| 3660 | { | 3649 | { |
| @@ -3681,7 +3670,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3681 | int space_flag = 0; | 3670 | int space_flag = 0; |
| 3682 | int sharp_flag = 0; | 3671 | int sharp_flag = 0; |
| 3683 | int zero_flag = 0; | 3672 | int zero_flag = 0; |
| 3684 | EMACS_INT field_width; | 3673 | ptrdiff_t field_width; |
| 3685 | int precision_given; | 3674 | int precision_given; |
| 3686 | uintmax_t precision = UINTMAX_MAX; | 3675 | uintmax_t precision = UINTMAX_MAX; |
| 3687 | char *num_end; | 3676 | char *num_end; |
| @@ -3788,11 +3777,11 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3788 | { | 3777 | { |
| 3789 | /* handle case (precision[n] >= 0) */ | 3778 | /* handle case (precision[n] >= 0) */ |
| 3790 | 3779 | ||
| 3791 | EMACS_INT width, padding, nbytes; | 3780 | ptrdiff_t width, padding, nbytes; |
| 3792 | EMACS_INT nchars_string; | 3781 | ptrdiff_t nchars_string; |
| 3793 | 3782 | ||
| 3794 | EMACS_INT prec = -1; | 3783 | ptrdiff_t prec = -1; |
| 3795 | if (precision_given && precision <= TYPE_MAXIMUM (EMACS_INT)) | 3784 | if (precision_given && precision <= TYPE_MAXIMUM (ptrdiff_t)) |
| 3796 | prec = precision; | 3785 | prec = precision; |
| 3797 | 3786 | ||
| 3798 | /* lisp_string_width ignores a precision of 0, but GNU | 3787 | /* lisp_string_width ignores a precision of 0, but GNU |
| @@ -3805,7 +3794,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3805 | width = nchars_string = nbytes = 0; | 3794 | width = nchars_string = nbytes = 0; |
| 3806 | else | 3795 | else |
| 3807 | { | 3796 | { |
| 3808 | EMACS_INT nch, nby; | 3797 | ptrdiff_t nch, nby; |
| 3809 | width = lisp_string_width (args[n], prec, &nch, &nby); | 3798 | width = lisp_string_width (args[n], prec, &nch, &nby); |
| 3810 | if (prec < 0) | 3799 | if (prec < 0) |
| 3811 | { | 3800 | { |
| @@ -3902,7 +3891,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 3902 | verify (0 < USEFUL_PRECISION_MAX); | 3891 | verify (0 < USEFUL_PRECISION_MAX); |
| 3903 | 3892 | ||
| 3904 | int prec; | 3893 | int prec; |
| 3905 | EMACS_INT padding, sprintf_bytes; | 3894 | ptrdiff_t padding, sprintf_bytes; |
| 3906 | uintmax_t excess_precision, numwidth; | 3895 | uintmax_t excess_precision, numwidth; |
| 3907 | uintmax_t leading_zeros = 0, trailing_zeros = 0; | 3896 | uintmax_t leading_zeros = 0, trailing_zeros = 0; |
| 3908 | 3897 | ||
| @@ -4217,8 +4206,8 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 4217 | 4206 | ||
| 4218 | if (CONSP (props)) | 4207 | if (CONSP (props)) |
| 4219 | { | 4208 | { |
| 4220 | EMACS_INT bytepos = 0, position = 0, translated = 0; | 4209 | ptrdiff_t bytepos = 0, position = 0, translated = 0; |
| 4221 | EMACS_INT argn = 1; | 4210 | ptrdiff_t argn = 1; |
| 4222 | Lisp_Object list; | 4211 | Lisp_Object list; |
| 4223 | 4212 | ||
| 4224 | /* Adjust the bounds of each text property | 4213 | /* Adjust the bounds of each text property |
| @@ -4236,7 +4225,7 @@ usage: (format STRING &rest OBJECTS) */) | |||
| 4236 | for (list = props; CONSP (list); list = XCDR (list)) | 4225 | for (list = props; CONSP (list); list = XCDR (list)) |
| 4237 | { | 4226 | { |
| 4238 | Lisp_Object item; | 4227 | Lisp_Object item; |
| 4239 | EMACS_INT pos; | 4228 | ptrdiff_t pos; |
| 4240 | 4229 | ||
| 4241 | item = XCAR (list); | 4230 | item = XCAR (list); |
| 4242 | 4231 | ||
| @@ -4367,12 +4356,12 @@ Case is ignored if `case-fold-search' is non-nil in the current buffer. */) | |||
| 4367 | It's the caller's job to ensure that START1 <= END1 <= START2 <= END2. */ | 4356 | It's the caller's job to ensure that START1 <= END1 <= START2 <= END2. */ |
| 4368 | 4357 | ||
| 4369 | static void | 4358 | static void |
| 4370 | transpose_markers (EMACS_INT start1, EMACS_INT end1, | 4359 | transpose_markers (ptrdiff_t start1, ptrdiff_t end1, |
| 4371 | EMACS_INT start2, EMACS_INT end2, | 4360 | ptrdiff_t start2, ptrdiff_t end2, |
| 4372 | EMACS_INT start1_byte, EMACS_INT end1_byte, | 4361 | ptrdiff_t start1_byte, ptrdiff_t end1_byte, |
| 4373 | EMACS_INT start2_byte, EMACS_INT end2_byte) | 4362 | ptrdiff_t start2_byte, ptrdiff_t end2_byte) |
| 4374 | { | 4363 | { |
| 4375 | register EMACS_INT amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos; | 4364 | register ptrdiff_t amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos; |
| 4376 | register struct Lisp_Marker *marker; | 4365 | register struct Lisp_Marker *marker; |
| 4377 | 4366 | ||
| 4378 | /* Update point as if it were a marker. */ | 4367 | /* Update point as if it were a marker. */ |
| @@ -4446,9 +4435,9 @@ any markers that happen to be located in the regions. | |||
| 4446 | Transposing beyond buffer boundaries is an error. */) | 4435 | Transposing beyond buffer boundaries is an error. */) |
| 4447 | (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers) | 4436 | (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers) |
| 4448 | { | 4437 | { |
| 4449 | register EMACS_INT start1, end1, start2, end2; | 4438 | register ptrdiff_t start1, end1, start2, end2; |
| 4450 | EMACS_INT start1_byte, start2_byte, len1_byte, len2_byte; | 4439 | ptrdiff_t start1_byte, start2_byte, len1_byte, len2_byte; |
| 4451 | EMACS_INT gap, len1, len_mid, len2; | 4440 | ptrdiff_t gap, len1, len_mid, len2; |
| 4452 | unsigned char *start1_addr, *start2_addr, *temp; | 4441 | unsigned char *start1_addr, *start2_addr, *temp; |
| 4453 | 4442 | ||
| 4454 | INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2, tmp_interval3; | 4443 | INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2, tmp_interval3; |
| @@ -4469,7 +4458,7 @@ Transposing beyond buffer boundaries is an error. */) | |||
| 4469 | /* Swap the regions if they're reversed. */ | 4458 | /* Swap the regions if they're reversed. */ |
| 4470 | if (start2 < end1) | 4459 | if (start2 < end1) |
| 4471 | { | 4460 | { |
| 4472 | register EMACS_INT glumph = start1; | 4461 | register ptrdiff_t glumph = start1; |
| 4473 | start1 = start2; | 4462 | start1 = start2; |
| 4474 | start2 = glumph; | 4463 | start2 = glumph; |
| 4475 | glumph = end1; | 4464 | glumph = end1; |