src/xdisp.c (compute_display_string_end): If there's no display
string at CHARPOS, return -1.
src/bidi.c (bidi_fetch_char): When compute_display_string_end
returns a negative value, treat the character as a normal
character not covered by a display string.
src/xdisp.c (handle_invisible_prop): If invisible text ends on a
newline, reseat the iterator instead of bidi-iterating there one
character at a time. (Bug#9610)
(BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail when past
TO_CHARPOS if the bidi iterator is at base embedding level.
(Funencodable_char_position, Fcheck_coding_systems_region)
(get_translation, handle_composition_annotation, consume_chars):
Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
(consume_chars): Rewrite to avoid calculating an address outside buffer.
this is what was intended anyway, and it avoids undefined behavior.
(CHARSET_OFFSET): Remove unused macro, instead of fixing its
integer-overflow issues.
(ENCODE_CHAR): Return unsigned on all hosts, not just on 32-bit hosts.
Formerly, it returned EMACS_INT on 64-bit hosts in the common case
where the argument is EMACS_INT, and this behavior is not intended.
Don't rely on undefined behavior with signed left shift overflow.
Don't assume unsigned int fits into fixnum, or that fixnum fits
into unsigned int. Don't require max_code to be a valid fixnum;
that's not true for gb10830 4-byte on a 32-bit host. Allow
invalid_code to be a cons, for the same reason. Require code_offset
to be a character. Avoid int overflow if max_char is close
to INT_MAX.
(CODE_POINT_TO_INDEX): On 32-bit hosts, return int, not unsigned;
this is intended anyway and avoids some undefined behavior.
(load_charset_map): Pass unsigned, not int, as 2nd arg of
INDEX_TO_CODE_POINT, as that's what it expects.
(Funify_charset, encode_char): Don't stuff unsigned vals into int vars.
src/dispnew.c (syms_of_display) <redisplay-dont-pause>: Default
value is now t. Doc fix.
doc/lispref/display.texi (Forcing Redisplay): Update the description of
redisplay-dont-pause due to change in the default value.
etc/NEWS: Mention the change of the default value.
src/indent.c (Fvertical_motion): Compute and apply the overshoot
logic when moving up, not only when moving down. Fix the
confusing name and values of the it_overshoot_expected variable;
logic changes accordingly. (Bug#9254) (Bug#9549)
src/xdisp.c (pos_visible_p): Produce correct pixel coordinates when
CHARPOS is covered by a display string which includes newlines.
(move_it_vertically_backward): Avoid inflooping when START_CHARPOS
is covered by a display string with embedded newlines.
The previous change was incomplete.
While it makes emacs --batch detect the vast majority of stdout
write failures, errors were still ignored whenever the output size is
k * (BUFSIZ+1) - 4. E.g., on a system with BUFSIZ of 4096,
$ emacs --batch --eval '(print (format "%4093d" 0))' > /dev/full \
&& echo FAIL: ignored write error
FAIL: ignored write error
$ emacs --batch --eval '(print (format "%20481d" 0))' > /dev/full \
&& echo FAIL: ignored write error
FAIL: ignored write error
* emacs.c (Fkill_emacs): Also test ferror. (Bug#9574)