]> git.donarmstrong.com Git - lilypond.git/commitdiff
(Simultaneous_music_iterator): init children_list_ before
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 19 Sep 2002 11:47:30 +0000 (11:47 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 19 Sep 2002 11:47:30 +0000 (11:47 +0000)
triggering GC.

* lily/*-iterator.cc: be even more careful with smobbed copy
constructors.

ChangeLog
lily/chord-tremolo-iterator.cc
lily/folded-repeat-iterator.cc
lily/lyric-combine-music-iterator.cc
lily/music-wrapper-iterator.cc
lily/part-combine-music-iterator.cc
lily/percent-repeat-iterator.cc
lily/sequential-iterator.cc
lily/simultaneous-music-iterator.cc
scm/music-functions.scm

index 139f5964691210e7261f68a8beed485edcf479e0..eb3259ae6c86d0348b6f409b0ff61818dc8cd606 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2002-09-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
+       * lily/simultaneous-music-iterator.cc
+       (Simultaneous_music_iterator): init children_list_ before
+       triggering GC.
+
+       * lily/*-iterator.cc: be even more careful with smobbed copy
+       constructors. 
+
        * lily/break-align-engraver.cc (acknowledge_grob): also typeset
        LeftEdge item.
 
index b4d769696810ee5258887f2396e5df0bab655855..ff44b03b333408aa958f88fc477497cef40cc1e0 100644 (file)
@@ -35,6 +35,7 @@ Chord_tremolo_iterator::Chord_tremolo_iterator (Chord_tremolo_iterator const &sr
   : Music_iterator (src)
 {
   factor_ = src.factor_;
+  
   child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0;
   if (child_iter_)
     scm_gc_unprotect_object (child_iter_->self_scm());
index b2e07aed32d6ba45a581dd93b30ac962bbd8c0f3..4c72fcf1b195d1d8e677bedb3ac72e66f0cc05ef 100644 (file)
@@ -40,9 +40,15 @@ Folded_repeat_iterator::do_quit()
 Folded_repeat_iterator::Folded_repeat_iterator (Folded_repeat_iterator const &src)
   : Music_iterator (src)
 {
-  main_iter_ = src.main_iter_ ? src.main_iter_->clone () : 0;
-  alternative_iter_ = src.alternative_iter_ ? src.alternative_iter_->clone () : 0;
+  main_iter_ = 0;
+  alternative_iter_ = 0;
   main_length_mom_ = src.main_length_mom_;
+
+  if (src.alternative_iter_)
+    alternative_iter_ = src.alternative_iter_->clone ();
+  if (src.main_iter_)
+    main_iter_ = src.main_iter_->clone ();
+  
   if (main_iter_)
     scm_gc_unprotect_object (main_iter_->self_scm());
   if (alternative_iter_)
index 127945b3d6276e47848c17c2f7b76560bbc3e3ce..e1c72a5e9d7774fc9c58371f2503692e6bbe90d4 100644 (file)
@@ -136,8 +136,13 @@ Lyric_combine_music_iterator::do_quit ()
 Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
     : Music_iterator (src)
 {
-  lyric_iter_ = src.lyric_iter_ ? src.lyric_iter_->clone () : 0;
-  music_iter_ = src.music_iter_ ? src.music_iter_->clone () : 0;  
+  lyric_iter_ = 0;
+  music_iter_ = 0;
+
+  if (src.lyric_iter_)
+    lyric_iter_ =  src.lyric_iter_->clone ();
+  if (src.music_iter_)
+    music_iter_ =  src.music_iter_->clone ();
 
   if (lyric_iter_)
     scm_gc_unprotect_object (lyric_iter_->self_scm());
index 7798d65eaf001651ccd59417df16d1ed148008e8..345ff87ab710ae1126e2d9a75ab77000e4090110 100644 (file)
@@ -18,9 +18,13 @@ Music_wrapper_iterator::Music_wrapper_iterator ()
 Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src)
   : Music_iterator (src)
 {
-  child_iter_ = (src.child_iter_) ? src.child_iter_->clone () : 0;
-  if (child_iter_)
+
+  child_iter_ = 0;
+  if  (src.child_iter_)
+  {
+    child_iter_ = src.child_iter_->clone () ;
     scm_gc_unprotect_object (child_iter_->self_scm());
+  }
 }
 
 void
index 11a0a75bff81af93b5212ab183a13e0b8df09290..276e2f4271bfcc9e48fbfc7a23c63d45286548cc 100644 (file)
@@ -45,8 +45,13 @@ Part_combine_music_iterator::do_quit ()
 Part_combine_music_iterator::Part_combine_music_iterator (Part_combine_music_iterator const &src)
   : Music_iterator (src)
 {
-  first_iter_ = src.first_iter_ ? src.first_iter_->clone () : 0;
-  second_iter_ = src.second_iter_ ? src.second_iter_->clone () : 0;
+  first_iter_ = 0;
+  second_iter_ = 0;
+
+  if(src.first_iter_)
+    first_iter_ = src.first_iter_->clone ();
+  if (src.second_iter_)
+    second_iter_ = src.second_iter_->clone ();
 
   first_until_ = src.first_until_;
   second_until_ = src.second_until_;
index cc9c112ad8cbd150cf4e6d781e42617241d1fbe8..d09e6c8f3b5f80fa7fbd7469094ec07aa893df95 100644 (file)
@@ -17,7 +17,6 @@ IMPLEMENT_CTOR_CALLBACK (Percent_repeat_iterator);
 Percent_repeat_iterator::Percent_repeat_iterator ()
 {
   child_iter_ = 0;
-  
 }
 
 void
@@ -29,11 +28,14 @@ Percent_repeat_iterator::do_quit()
 Percent_repeat_iterator::Percent_repeat_iterator (Percent_repeat_iterator const & p)
   : Music_iterator (p)
 {
-  child_iter_ = p.child_iter_ ? p.child_iter_->clone (): 0;
-  finish_mom_ = p.finish_mom_ ;
-
-  if(child_iter_)
-    scm_gc_unprotect_object (child_iter_->self_scm());
+  child_iter_ = 0;
+ finish_mom_ = p.finish_mom_ ;
+  if (p.child_iter_)
+    {
+      child_iter_ =  p.child_iter_->clone ();
+      scm_gc_unprotect_object (child_iter_->self_scm());
+    }
 }
 
 bool
index 6817d3a0d5c71c7f95cd85f6d5d22683a8aa988d..798283abaa62f8ac845d8f5a35b436bcb6e4e0af 100644 (file)
@@ -66,10 +66,13 @@ Sequential_iterator::Sequential_iterator (Sequential_iterator const &src)
   cursor_ = src.cursor_;
   list_ = src.cursor_;
   here_mom_ = src.here_mom_;
-  iter_ = (src.iter_) ? src.iter_->clone () : 0;
+  iter_ = 0;
 
-  if (iter_)
-    scm_gc_unprotect_object (iter_->self_scm());
+  if (src.iter_)
+    {
+      iter_ = src.iter_->clone ();
+      scm_gc_unprotect_object (iter_->self_scm());
+    }
 }
 
 void
index 957b7bb628ba6ef388413702ae520ccc18159c30..bdeb2a7f43087f6ef245e258e62ccf6dfb1f8eb2 100644 (file)
@@ -24,6 +24,7 @@ Simultaneous_music_iterator::Simultaneous_music_iterator (Simultaneous_music_ite
 {
   separate_contexts_b_
     = src.separate_contexts_b_;
+  children_list_ = SCM_EOL;
   
   SCM children_list = SCM_EOL;
   SCM *tail  = &children_list; 
index dda65d854118efaa8d4318dee5d8b275fdac7edb..19492d57e0f4e2cfc152dd17a666f03c83033ada 100644 (file)
@@ -329,7 +329,7 @@ this is not an override
 ;; switch it on here, so parsing and init isn't checked (too slow!)
 
 (define (switch-on-debugging m)
-  (set-debug-cell-accesses! 15000)
+  (set-debug-cell-accesses! 4000)
   m
   )