On 14 March 2011 23:26, m...@apollinemike.com <m...@apollinemike.com> wrote:

> backtrace from valgrind, also after balloon.ly

[snip]

Interesting.  I was on the right track, but it appears to be deleting
something which has already been deleted:

Audio_staff*
Staff_performer::new_audio_staff (string voice)
{
  Audio_staff* audio_staff = new Audio_staff;
  string track_name = context ()->id_string () + ":" + voice;
  if (track_name != ":")
    {
      name_ = new Audio_text (Audio_text::TRACK_NAME, context ()->id_string ()
                              + ":" + voice);
      audio_staff->add_audio_item (name_);
    }
  announce_element (Audio_element_info (audio_staff, 0));
  announce_element (Audio_element_info (name_, 0));

In baerenreiter-sarabande.ly, there's an unnamed voice (I'm not sure
where it is though :) which gets a track name of ":".  Since the above
code doesn't create a new name_, it's announced as the previous
Audio_text.  Thus there are two identical pointers added to
Performance::audio_elements_, the second of which junk_pointers ()
attempts to delete after it's already gone.

Cheers,
Neil

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to