Mercurial > emacs
changeset 39237:6f790c6b0045
(init_from_display_pos): Put some code in #if 0.
(add_to_log): Use bcopy instead of strcpy.
(init_from_display_pos): Use an explicit loop over bytes in
overlay strings instead of calling index.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 11 Sep 2001 08:22:05 +0000 |
parents | 7739d3981d2f |
children | 7370effcd55c |
files | src/xdisp.c |
diffstat | 1 files changed, 20 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Mon Sep 10 20:40:42 2001 +0000 +++ b/src/xdisp.c Tue Sep 11 08:22:05 2001 +0000 @@ -1840,11 +1840,19 @@ init_iterator (it, w, charpos, bytepos, NULL, DEFAULT_FACE_ID); for (i = 0; i < it->n_overlay_strings; ++i) - if (index (XSTRING (it->overlay_strings[i])->data, '\n')) - { - overlay_strings_with_newlines = 1; - break; - } + { + char *s = XSTRING (it->overlay_strings[i])->data; + char *e = s + STRING_BYTES (XSTRING (it->overlay_strings[i])); + + while (s < e && *s != '\n') + ++s; + + if (s < e) + { + overlay_strings_with_newlines = 1; + break; + } + } /* If position is within an overlay string, set up IT to the right overlay string. */ @@ -1881,6 +1889,11 @@ it->current.string_pos = pos->string_pos; it->method = next_element_from_string; } + +#if 0 /* This is bogus because POS not having an overlay string + position does not mean it's after the string. Example: A + line starting with a before-string and initialization of IT + to the previous row's end position. */ else if (it->current.overlay_string_index >= 0) { /* If POS says we're already after an overlay string ending at @@ -1894,6 +1907,7 @@ if (CHARPOS (pos->pos) == ZV) it->overlay_strings_at_end_processed_p = 1; } +#endif /* 0 */ if (CHARPOS (pos->string_pos) >= 0) { @@ -5558,7 +5572,7 @@ len = STRING_BYTES (XSTRING (msg)) + 1; buffer = (char *) alloca (len); - strcpy (buffer, XSTRING (msg)->data); + bcopy (XSTRING (msg)->data, buffer, len); message_dolog (buffer, len - 1, 1, 0); UNGCPRO;