]> git.donarmstrong.com Git - lilypond.git/commitdiff
Tuplets: error-checking; issue 3551
authorKeith OHara <k-ohara5a5a@oco.net>
Mon, 16 Sep 2013 05:58:07 +0000 (22:58 -0700)
committerKeith OHara <k-ohara5a5a@oco.net>
Sat, 21 Sep 2013 17:52:38 +0000 (10:52 -0700)
lily/tuplet-engraver.cc
  do not create a TupletBracket if it would have no bounds
lily/tuplet-bracket.cc
  defensive pointer check

lily/tuplet-bracket.cc
lily/tuplet-engraver.cc

index d211dcae38f55b39c91cb9095791816eb07396cc..1eccaabc06ffb663718f2b65fbcf5bfc4f2ce1c9 100644 (file)
@@ -92,8 +92,10 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, vector<Grob *> const &cols,
 {
   Spanner *me = dynamic_cast<Spanner *> (me_grob);
 
-  if (me->get_bound (LEFT)->break_status_dir ()
-      || me->get_bound (RIGHT)->break_status_dir ())
+  Item *left = me->get_bound (LEFT);
+  Item *right = me->get_bound (RIGHT);
+  if (!left || left->break_status_dir ()
+      || !right || right->break_status_dir ())
     return 0;
 
   Drul_array<Grob *> stems (Note_column::get_stem (cols[0]),
index 4348044fbe002c5cc15f6a69802f4839766e536d..1fc30d898a178ef27e464b57fac4b925d1e4836c 100644 (file)
@@ -107,7 +107,7 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
           tuplets_.pop_back ();
         }
       else if (!to_boolean (get_property ("skipTypesetting")))
-        ev->origin ()->warning (_ ("No tuplet to end"));
+        ev->origin ()->debug_output (_ ("No tuplet to end"));
     }
   else
     ev->origin ()->programming_error ("direction tuplet-span-event_ invalid.");
@@ -155,7 +155,10 @@ Tuplet_engraver::process_music ()
                                      stopped_tuplets_[i].bracket_->get_bound (LEFT));
                 }
               else
-                programming_error ("stopped tuplet bracket has neither left nor right bound");
+                {
+                  warning ("omitting tuplet bracket with neither left nor right bound");
+                  continue;
+                }
             }
           // todo: scrap last_tuplets_, use stopped_tuplets_ only.
           // clear stopped_tuplets_ at start_translation_timestep