From 1ad9b26da316e538a604e977d870af7185da5bc6 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 7 Jul 2015 15:23:21 +0200 Subject: [PATCH] Issue 2608: Lyrics iteration can't handle some unusual setups This avoids continued use of an associated Voice context that is no longer associated with any iterators. --- lily/lyric-combine-music-iterator.cc | 3 ++- lily/lyric-engraver.cc | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index b64251beed..336b167f2e 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -161,7 +161,8 @@ Lyric_combine_music_iterator::run_always () const bool Lyric_combine_music_iterator::ok () const { - return lyric_iter_ && lyric_iter_->ok (); + return lyric_iter_ && lyric_iter_->ok () + && !(music_context_ && music_context_->is_removable ()); } void diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index fadb35d6b4..bc576bf3cc 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -96,7 +96,10 @@ get_voice_to_lyrics (Context *lyrics) SCM avc = lyrics->get_property ("associatedVoiceContext"); if (Context *c = unsmob (avc)) - return c; + { + if (!c->is_removable ()) + return c; + } SCM voice_name = lyrics->get_property ("associatedVoice"); string nm = lyrics->id_string (); -- 2.39.5