Thanks for the feedback! A couple questions below. On Nov 14, 2011, at 12:34 PM, d...@gnu.org wrote:
> > http://codereview.appspot.com/4877041/diff/26012/lily/system.cc#newcode248 > lily/system.cc:248: if (s->original ()) > You don't check for success of the dynamic_cast before using it. Is > that a problem? > > http://codereview.appspot.com/4877041/diff/26012/lily/system.cc#newcode367 > lily/system.cc:367: Grob *me = unsmob_grob (smob); > According to the compiler, getting the pointer me is the last operation > for which smob is needed. After that, it is free for garbage > collection. > > If you are not sure that other references to smob keep it from being > collected, you need to write > scm_remember_upto_here_1 (smob) > at the place where garbage collecting smob will no longer be a problem. > > That's probably after all the relevant info is entered in grobs_scm. > How is this function different from other callback functions that use the convention Grob *me = unsmob_smob (smob); ? I understand what you're saying with scm_remember_upto_here, but I don't see why this function would need it where other callback functions don't. Also, is it safe to put a smob up for garbage collection after it is put into a grob array? That is, the next time that the grob array is unsmobed, will it potentially contain a smob that has been garbage collected? _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel