]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/ly-smobs.icc
* lily/spanner.cc (find_broken_piece):
[lilypond.git] / lily / include / ly-smobs.icc
index 45ba7ebf2d1e58d4fbf441706c3f37052c63559d..99c09fc0435f3e51792fd3966bc507c88235d81d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1999--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1999--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #ifndef LY_SMOBS_ICC
@@ -51,7 +51,7 @@
   {                                                                    \
     CL *s = (CL *) SCM_CELL_WORD_1 (ses);                              \
     delete s;                                                          \
-    scm_gc_unregister_collectable_memory (s, sizeof (CL), #CL " smob");        \
+    /*    scm_gc_unregister_collectable_memory (s, sizeof (CL), #CL " smob"); */ \
     return SMOB_FREE_RETURN_VAL (CL);                                  \
   }                                                                    \
                                                                        \
     void                                                               \
   CL::smobify_self ()                                                  \
   {                                                                    \
-    SCM s = unprotected_smobify_self ();                               \
-    scm_gc_protect_object (s);                                         \
+    protection_cons_ = SCM_EOL;                                                \
+    self_scm_ = unprotected_smobify_self ();                           \
+    protect ();                                                                \
+  }                                                                    \
+  void                                                                 \
+  CL::protect ()                                                       \
+  {                                                                    \
+    protect_smob (self_scm_, &protection_cons_);                       \
+  }                                                                    \
+  SCM                                                                  \
+  CL::unprotect ()                                                     \
+  {                                                                    \
+    unprotect_smob (self_scm_, &protection_cons_);                     \
+    return self_scm_;                                                  \
   }                                                                    \
-                                                                       \
   SCM                                                                  \
   CL::unprotected_smobify_self ()                                      \
   {                                                                    \