From 17ba7ac5d9295d39ec3b97712d061b3c7866a093 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gerd=20M=C3=B6llmann?= <gerd@gnu.org> Date: Wed, 28 Sep 2022 16:38:04 +0200 Subject: [PATCH] Avoid nested iteration over intervals (bug#58144) * src/xdisp.c (strings_with_newlines): Call buffer_overlay_iter_finish. --- src/xdisp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index cee75def804..6ecd3bdf24f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -7031,13 +7031,21 @@ strings_with_newlines (ptrdiff_t startpos, ptrdiff_t endpos, struct window *w) str = Foverlay_get (overlay, Qbefore_string); if (STRINGP (str) && SCHARS (str) && memchr (SDATA (str), '\n', SBYTES (str))) - return true; + { + buffer_overlay_iter_finish (current_buffer); + return true; + } str = Foverlay_get (overlay, Qafter_string); if (STRINGP (str) && SCHARS (str) && memchr (SDATA (str), '\n', SBYTES (str))) - return true; + { + buffer_overlay_iter_finish (current_buffer); + return true; + } } + buffer_overlay_iter_finish (current_buffer); + /* Check for 'display' properties whose values include strings. */ Lisp_Object cpos = make_fixnum (startpos); Lisp_Object limpos = make_fixnum (endpos); -- 2.39.5