]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fixes issue 1706, issues a programming error at old assert error.
authorMike Solomon <mike@apollinemike.com>
Sat, 25 Jun 2011 17:10:50 +0000 (19:10 +0200)
committerCarl Sorensen <c_sorensen@byu.edu>
Mon, 27 Jun 2011 19:52:03 +0000 (13:52 -0600)
input/regression/beam-skip.ly [new file with mode: 0644]
lily/beam.cc

diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly
new file mode 100644 (file)
index 0000000..4f1dc3e
--- /dev/null
@@ -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}>>
+}
index 741ae34765bc8265dffb43ca24f130dbfa15541a..29c5ba667537826bf5787dff21596482af37e6ae 100644 (file)
@@ -555,6 +555,8 @@ Beam::print (SCM grob)
   Spanner *me = unsmob_spanner (grob);
   Grob *commonx = 0;
   vector<Beam_segment> 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);