From 31cae8bae49aedd898210420cb5ccb10f34213f3 Mon Sep 17 00:00:00 2001 From: Keith OHara Date: Sun, 15 Sep 2013 22:58:07 -0700 Subject: [PATCH] Tuplets: error-checking; issue 3551 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 | 6 ++++-- lily/tuplet-engraver.cc | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index d211dcae38..1eccaabc06 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -92,8 +92,10 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, vector const &cols, { Spanner *me = dynamic_cast (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 stems (Note_column::get_stem (cols[0]), diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 4348044fbe..1fc30d898a 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -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 -- 2.39.2