From 937d5e7a94ffbd3165f265ab6caec3050e6c23a5 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sat, 25 Jun 2011 19:10:50 +0200 Subject: [PATCH] Fixes issue 1706, issues a programming error at old assert error. --- input/regression/beam-skip.ly | 22 ++++++++++++++++++++++ lily/beam.cc | 8 +++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 input/regression/beam-skip.ly diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly new file mode 100644 index 0000000000..4f1dc3e93a --- /dev/null +++ b/input/regression/beam-skip.ly @@ -0,0 +1,22 @@ + +\header { + texidoc = "Beams over skips do not cause a segfault." +} + +\version "2.15.3" + +\layout { ragged-right = ##t } + +music = { + \clef bass r2 r4 r8 f, + r2 r4 g,8 r + r4 f, 8 r8 r2 +} + +beams = { + \repeat "unfold" 24 { s8[ s ] s[ s]} +} + +\new Staff { + \context Voice << { \beams } { \music}>> +} diff --git a/lily/beam.cc b/lily/beam.cc index 741ae34765..29c5ba6675 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -555,6 +555,8 @@ Beam::print (SCM grob) Spanner *me = unsmob_spanner (grob); Grob *commonx = 0; vector segments = get_beam_segments (me, &commonx); + if (!segments.size ()) + return SCM_EOL; Interval span; if (normal_stem_count (me)) @@ -974,7 +976,11 @@ Beam::no_visible_stem_positions (Grob *me, Interval default_value) } Direction dir = get_grob_direction (me); - Real y = head_positions[dir] + + if (!dir) + programming_error ("The beam should have a direction by now."); + + Real y = head_positions.linear_combination (dir) * 0.5 * Staff_symbol_referencer::staff_space (me) + dir * get_beam_translation (me) * (multiplicity.length () + 1); -- 2.39.5