]> git.eshelyaron.com Git - emacs.git/commit
Widen modiff counts to avoid wraparound
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 31 Jan 2019 18:29:50 +0000 (10:29 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 31 Jan 2019 18:31:43 +0000 (10:31 -0800)
commit05d2fc7170fb66a87601b1c76ddae2c1b7b4b934
tree217ddd3a45ea611069d85ac13e22e525bb965996
parenta68eee50eb515b28b448894299334afced26ef78
Widen modiff counts to avoid wraparound

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)
(modify_overlay):
* 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)
(find_defun_start):
* 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.
15 files changed:
doc/lispref/buffers.texi
src/buffer.c
src/buffer.h
src/cmds.c
src/editfns.c
src/fileio.c
src/indent.c
src/insdel.c
src/keyboard.c
src/lisp.h
src/marker.c
src/pdumper.c
src/syntax.c
src/textprop.c
src/window.h