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

Reply via email to