- bool no_vertical_start = orig_span && !first_bracket;
- bool no_vertical_end = orig_span && !last_bracket;
- SCM s = me->get_grob_property ("bars");
- Grob * endbar = unsmob_grob (ly_car (s));
- SCM glyph = endbar->get_grob_property("glyph");
+ bool broken_last_bracket = orig_span && (orig_span->broken_intos_.top () == (Spanner*)me);
+
+ bool no_vertical_start = orig_span && !broken_first_bracket;
+ bool no_vertical_end = orig_span && !broken_last_bracket;
+ SCM s = me->get_property ("bars");
+ Grob * endbar = scm_is_pair (s) ? unsmob_grob (scm_car (s)) : 0;
+ SCM glyph = endbar ? endbar->get_property ("glyph") : SCM_EOL;