X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faxis-group-interface.cc;h=efed220b256c72639d9cd14538fc94686a61fa32;hb=96f2ffad1d385fd338f430ffa7877ed2fdb17bbb;hp=044a392851df4ee626f48e6852b655e6762cd4a3;hpb=eeb973b4126dad28bd9f60ab2af772c919401e23;p=lilypond.git diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index 044a392851..efed220b25 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -579,6 +579,15 @@ add_grobs_of_one_priority (Skyline_pair *const skylines, Skyline_pair Axis_group_interface::skyline_spacing (Grob *me, vector elements) { + /* For grobs with an outside-staff-priority, the sorting function might + call extent and cause suicide. This breaks the contract that is required + for the STL sort function. To avoid this, we make sure that any suicides + are triggered beforehand. + */ + for (vsize i = 0; i < elements.size (); i++) + if (scm_is_number (elements[i]->get_property ("outside-staff-priority"))) + elements[i]->extent (elements[i], X_AXIS); + vector_sort (elements, staff_priority_less); Grob *x_common = common_refpoint_of_array (elements, me, X_AXIS); Grob *y_common = common_refpoint_of_array (elements, me, Y_AXIS);