From 12f6dc265020fd98dcb3938b4856272b7b24a76e Mon Sep 17 00:00:00 2001 From: Rune Zedeler Date: Fri, 21 Dec 2007 23:31:55 +0100 Subject: [PATCH] Fix 537 (introduced in c0e7005ed202874f8ea67279e5c96ec53985c3fb) pitch-interval.cc: fixed empty interval case of add_point() ambitus-engraver.cc: Handle empty interval explicitly --- lily/ambitus-engraver.cc | 2 ++ lily/pitch-interval.cc | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc index a9f1d92f57..0cfbc58e98 100644 --- a/lily/ambitus-engraver.cc +++ b/lily/ambitus-engraver.cc @@ -122,6 +122,8 @@ Ambitus_engraver::acknowledge_note_head (Grob_info info) if (nr && nr->in_event_class ("note-event")) { Pitch pitch = *unsmob_pitch (nr->get_property ("pitch")); + if (pitch_interval_.is_empty()) + causes_[UP] = causes_[DOWN] = nr; Direction expand_dir = pitch_interval_.add_point (pitch); if (expand_dir) causes_[expand_dir] = nr; diff --git a/lily/pitch-interval.cc b/lily/pitch-interval.cc index 84d4911498..3043bbff07 100644 --- a/lily/pitch-interval.cc +++ b/lily/pitch-interval.cc @@ -31,7 +31,12 @@ Pitch_interval::is_empty () const Direction Pitch_interval::add_point (Pitch p) { - if (at (LEFT).tone_pitch () > p.tone_pitch ()) + if (is_empty()) + { + at (LEFT) = at (RIGHT) = p; + return CENTER; + } + else if (at (LEFT).tone_pitch () > p.tone_pitch ()) { at (LEFT) = p; return LEFT; @@ -67,7 +72,12 @@ Pitch_lexicographic_interval::is_empty () const Direction Pitch_lexicographic_interval::add_point (Pitch p) { - if (at (LEFT) > p) + if (is_empty()) + { + at (LEFT) = at (RIGHT) = p; + return CENTER; + } + else if (at (LEFT) > p) { at (LEFT) = p; return LEFT; -- 2.39.5