From: Joe Neeman Date: Sun, 18 May 2008 01:06:24 +0000 (+1000) Subject: Fix 619. X-Git-Tag: release/2.11.47-1~5^2~36 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7a2fef70490f4f212c6ce2fe3b51a2724b183366;p=lilypond.git Fix 619. Ensure that the sorting function used to find the outside-staff-priority grobs doesn't modify its arguments. --- 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);