[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Uses derived_mark to avoid segfault (issue 5729051)

From: mtsolo
Subject: Re: Uses derived_mark to avoid segfault (issue 5729051)
Date: Sun, 04 Mar 2012 08:44:06 +0000
File lily/ (right):
lily/ axis_groups_ = scm_cons (scm_cons
(i.grob ()->self_scm (), i.context ()->self_scm ()), axis_groups_);
On 2012/03/04 07:26:30, dak wrote:
axis_groups_ never gets cleared out again: this keeps grobs and
contexts alive
at least until the engraver is collected.

This is the point.  I was wrong to suggest before that it be cleared
Unless the score is insane, a context like PianoStaff will only ever
house 10ish contexts and 10 vertical axis groups max.  So the size will
stay tiny.

I could clear this out, but the problem is that LilyPond doesn't provide
a mechanism to signal when VerticalAxisGroups are no longer being used.
If announce_end_spanner were called on them, I could acknowledge that in
the engraver.  A separate tracker issue could be opened for that.
lily/ if (!vertical_alignment) // we are at
the beginning of a score, so no need for stubs
On 2012/03/04 07:26:30, dak wrote:
If "we are at the beginning of the score" is a valid state here,
(axis_groups_) is likely to throw an exception.

This is not possible because process_acknowledged is called after all
other process calls, so the list will be populated.  However, I agree
that an extra check here couldn't hurt.
lily/ for (vsize j = 0; j <
affected_contexts.size (); j++)
On 2012/03/04 07:26:30, dak wrote:
While you are at it: how about throwing out all of the reverses and
letting the loop run backwards?

This is vestigial code from when I was doing sorting on the span bar
vector.  It is no longer necessary, so removed.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]