• Paul Eggert's avatar
    Widen modiff counts to avoid wraparound · 05d2fc71
    Paul Eggert authored
    Widen modification counts to at least 64 bits, to make
    wraparound practically impossible.
    * doc/lispref/buffers.texi (Buffer Modification):
    Don’t say the modification-count can wrap around.
    * src/buffer.c (Frestore_buffer_modified_p, Fbuffer_swap_text)
    * src/insdel.c (insert_1_both, insert_from_string_1)
    (insert_from_gap, insert_from_buffer_1)
    (adjust_after_replace, replace_range, replace_range_2)
    (del_range_2, modify_text):
    * src/textprop.c (modify_text_properties):
    Use modiff_incr instead of incrementing	directly.
    (Fbuffer_modified_tick, Fbuffer_chars_modified_tick):
    Don’t assume modification counts fit into fixnums.
    * src/buffer.h (struct buffer_text, struct buffer):
    * src/cmds.c (internal_self_insert):
    * src/fileio.c (Finsert_file_contents):
    * src/indent.c (last_known_column_modified):
    * src/keyboard.c (command_loop_1):
    * src/marker.c (cached_modiff):
    * src/syntax.c (find_start_modiff, parse_sexp_propertize)
    * src/window.h (struct window):
    Use modiff_count for modification counts.
    * src/editfns.c (Fsubst_char_in_region):
    Copy instead of incrementing modification counts,
    since integer overflow checking is not needed here.
    * src/lisp.h (modiff_count): New type.
    (modiff_incr, modiff_to_integer): New inline functions.
    * src/pdumper.c (dump_buffer): Update hash.
editfns.c 140 KB