# HG changeset patch # User Gerd Moellmann # Date 1000196525 0 # Node ID 6f790c6b00452b10cb4a25b5f9e37f2e37e1e68e # Parent 7739d3981d2f3f9436ad1e1347fa35617ade2478 (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. diff -r 7739d3981d2f -r 6f790c6b0045 src/xdisp.c --- 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;