X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-smob.cc;h=4fb42c9237d2a707fc0e0460d720e0de3cc57bc8;hb=8e6e4cd90a1bd536422ebdec9bc0f2d75a8df7f5;hp=06e757d1c204c94c995a6c82b912797c76e8b558;hpb=889dc430ee110fc9f7b66d9f8768fb746bb2b12a;p=lilypond.git diff --git a/lily/grob-smob.cc b/lily/grob-smob.cc index 06e757d1c2..4fb42c9237 100644 --- a/lily/grob-smob.cc +++ b/lily/grob-smob.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys + (c) 2005--2006 Han-Wen Nienhuys */ #include "grob.hh" @@ -21,26 +21,19 @@ Grob::mark_smob (SCM ses) { Grob *s = (Grob *) SCM_CELL_WORD_1 (ses); scm_gc_mark (s->immutable_property_alist_); - scm_gc_mark (s->property_callbacks_); if (s->key_) scm_gc_mark (s->key_->self_scm ()); - for (int a = 0; a < 2; a++) - { - scm_gc_mark (s->dim_cache_[a].offset_callbacks_); - scm_gc_mark (s->dim_cache_[a].dimension_); - scm_gc_mark (s->dim_cache_[a].dimension_callback_); - - /* Do not 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_) - scm_gc_mark (s->original_->self_scm ()); + + /* Do not 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 ()) + scm_gc_mark (s->original ()->self_scm ()); s->derived_mark (); scm_gc_mark (s->object_alist_); @@ -55,7 +48,7 @@ Grob::print_smob (SCM s, SCM port, scm_print_state *) Grob *sc = (Grob *) SCM_CELL_WORD_1 (s); scm_puts ("#name ().to_str0 (), port); + scm_puts ((char *) sc->name ().c_str (), port); /* Do not print properties, that is too much hassle. */ scm_puts (" >", port);