Avoid assertion violations in 'push_prefix_prop'

* src/xdisp.c (push_prefix_prop): Set the
'string_from_prefix_prop_p' flag for any valid value of the
'line-prefix' or 'wrap-prefix' property/variable.  (Bug#70495)
This commit is contained in:
Eli Zaretskii 2024-04-21 16:06:34 +03:00
parent c929532b46
commit aed2b7a3d8
2 changed files with 5 additions and 1 deletions

View file

@ -2373,7 +2373,9 @@ struct it
bool_bf string_from_display_prop_p : 1; bool_bf string_from_display_prop_p : 1;
/* True means `string' comes from a `line-prefix' or `wrap-prefix' /* True means `string' comes from a `line-prefix' or `wrap-prefix'
property. */ property, and that these properties were already handled, even if
their value is not a string. This is used to avoid processing
the same line/wrap prefix more than once for the same glyph row. */
bool_bf string_from_prefix_prop_p : 1; bool_bf string_from_prefix_prop_p : 1;
/* True means we are iterating an object that came from a value of a /* True means we are iterating an object that came from a value of a

View file

@ -24030,6 +24030,7 @@ push_prefix_prop (struct it *it, Lisp_Object prop)
{ {
it->method = GET_FROM_STRETCH; it->method = GET_FROM_STRETCH;
it->object = prop; it->object = prop;
it->string_from_prefix_prop_p = true;
} }
#ifdef HAVE_WINDOW_SYSTEM #ifdef HAVE_WINDOW_SYSTEM
else if (IMAGEP (prop)) else if (IMAGEP (prop))
@ -24037,6 +24038,7 @@ push_prefix_prop (struct it *it, Lisp_Object prop)
it->what = IT_IMAGE; it->what = IT_IMAGE;
it->image_id = lookup_image (it->f, prop, it->face_id); it->image_id = lookup_image (it->f, prop, it->face_id);
it->method = GET_FROM_IMAGE; it->method = GET_FROM_IMAGE;
it->string_from_prefix_prop_p = true;
} }
#endif /* HAVE_WINDOW_SYSTEM */ #endif /* HAVE_WINDOW_SYSTEM */
else else