2002-06-30 Jan Nieuwenhuizen <janneke@gnu.org>
+ * lily/grob.cc (mark_smob): don't mark parents, explain why.
+
* tex/lilyponddefs.tex: Define outputscale only once.
2002-06-29 Jan Nieuwenhuizen <janneke@gnu.org>
lists of grobs. This should fix the problems of lily in
combination with pthreads/qthreads.
- * lily/grob.cc (mark_smob): bugfix: mark X parent too.
+ * lily/grob.cc (mark_smob): bugfix: mark other parent too.
2002-06-23 Chris Jackson <chris@fluffhouse.org.uk>
if (!line)
return sc->self_scm();
+ /*
+ We don't return SCM_UNDEFINED for
+ suicided grobs, for two reasons
+
+ - it doesn't work (strange disappearing objects)
+
+ - it forces us to mark the parents of a grob, leading to
+ a huge recursion in the GC routine.
+ */
/*
This was introduced in 1.3.49 as a measure to prevent
{
scm_gc_mark (s->dim_cache_[a].offset_callbacks_);
scm_gc_mark (s->dim_cache_[a].dimension_);
- Grob *p = s->get_parent (Axis (a));
- if (p)
- scm_gc_mark (p->self_scm ());
+
+ /*
+ don't mark the parents. The pointers in the mutable property
+ list form two tree like structures (one for X relations, one
+ for Y relations). Marking these can be done in limited stack
+ space. If we add the parents, we will jump between X and Y in
+ an erratic manner, leading to much more recursion depth (and
+ core dumps if we link to pthreads.
+ */
}
if (s->original_l_)