CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/08/04 10:46:35

Modified files:
        .              : ChangeLog THANKS 
        lily           : auto-beam-engraver.cc clef-engraver.cc 
                         grob-array.cc hara-kiri-engraver.cc 
                         ly-module.cc stanza-number-engraver.cc 
                         time-signature-engraver.cc volta-engraver.cc 

Log message:
        (derived_mark): new method. Yes. We
        have to protect even those unlikely to be corrupted data members.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3952&tr2=1.3953&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/THANKS.diff?tr1=1.138&tr2=1.139&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/auto-beam-engraver.cc.diff?tr1=1.153&tr2=1.154&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/clef-engraver.cc.diff?tr1=1.129&tr2=1.130&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob-array.cc.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/hara-kiri-engraver.cc.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/ly-module.cc.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/stanza-number-engraver.cc.diff?tr1=1.43&tr2=1.44&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/time-signature-engraver.cc.diff?tr1=1.65&tr2=1.66&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/volta-engraver.cc.diff?tr1=1.65&tr2=1.66&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3952 lilypond/ChangeLog:1.3953
--- lilypond/ChangeLog:1.3952   Thu Aug  4 09:58:13 2005
+++ lilypond/ChangeLog  Thu Aug  4 10:46:33 2005
@@ -1,3 +1,8 @@
+2005-08-04  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
+
+       * lily/auto-beam-engraver.cc (derived_mark): new method. Yes. We
+       have to protect even those unlikely to be corrupted data members.  
+
 2005-08-04  Graham Percival  <[EMAIL PROTECTED]>
 
        * ly/bagpipe.ly: new file.
Index: lilypond/THANKS
diff -u lilypond/THANKS:1.138 lilypond/THANKS:1.139
--- lilypond/THANKS:1.138       Thu Aug  4 09:58:13 2005
+++ lilypond/THANKS     Thu Aug  4 10:46:34 2005
@@ -31,7 +31,7 @@
 
 Erlend Aasland
 Bob Broadus
-
+Donald Axel
 
 
 Release 2.6
Index: lilypond/lily/auto-beam-engraver.cc
diff -u lilypond/lily/auto-beam-engraver.cc:1.153 
lilypond/lily/auto-beam-engraver.cc:1.154
--- lilypond/lily/auto-beam-engraver.cc:1.153   Tue Jul 26 22:24:30 2005
+++ lilypond/lily/auto-beam-engraver.cc Thu Aug  4 10:46:34 2005
@@ -31,7 +31,8 @@
   void process_music ();
   virtual bool try_music (Music *);
   virtual void finalize ();
-
+  virtual void derived_mark () const;
+  
   DECLARE_ACKNOWLEDGER (rest);
   DECLARE_ACKNOWLEDGER (beam);
   DECLARE_ACKNOWLEDGER (bar_line);
@@ -72,7 +73,7 @@
 
   // We act as if beam were created, and start a grouping anyway.
   Beaming_info_list *grouping_;
-  SCM beam_settings_;          // ugh. should protect ? 
+  SCM beam_settings_;
 
   Beaming_info_list *finished_grouping_;
 
@@ -81,6 +82,13 @@
 
 
 void
+Auto_beam_engraver::derived_mark () const
+{
+  scm_gc_mark (beam_settings_);
+}
+
+
+void
 Auto_beam_engraver::check_bar_property ()
 {
   /* Duplicated from process_music (), since
@@ -181,7 +189,13 @@
     if (Stem::get_beam ((*stems_)[i]))
       return 0;
 
-  Spanner *beam = new Spanner (beam_settings_, context ()->get_grob_key 
("Beam"));
+  /*
+    Can't use make_spanner_from_properties() because we have to use
+    beam_settings_.
+   */
+  Spanner *beam = new Spanner (beam_settings_,
+                              context ()->get_grob_key ("Beam"));
+
   for (int i = 0; i < stems_->size (); i++)
     {
       Beam::add_stem (beam, (*stems_)[i]);
Index: lilypond/lily/clef-engraver.cc
diff -u lilypond/lily/clef-engraver.cc:1.129 
lilypond/lily/clef-engraver.cc:1.130
--- lilypond/lily/clef-engraver.cc:1.129        Tue Jul 26 22:24:30 2005
+++ lilypond/lily/clef-engraver.cc      Thu Aug  4 10:46:35 2005
@@ -30,6 +30,8 @@
   void stop_translation_timestep ();
   void process_music ();
   DECLARE_ACKNOWLEDGER (bar_line);
+
+  virtual void derived_mark () const;
 private:
   Item *clef_;
   Item *octavate_;
@@ -41,6 +43,14 @@
   void set_glyph ();
   void inspect_clef_properties ();
 };
+
+void
+Clef_engraver::derived_mark () const
+{
+  scm_gc_mark (prev_octavation_);
+  scm_gc_mark (prev_cpos_);
+  scm_gc_mark (prev_glyph_);
+}
 
 Clef_engraver::Clef_engraver ()
 {
Index: lilypond/lily/grob-array.cc
diff -u lilypond/lily/grob-array.cc:1.2 lilypond/lily/grob-array.cc:1.3
--- lilypond/lily/grob-array.cc:1.2     Tue Jul 19 10:20:21 2005
+++ lilypond/lily/grob-array.cc Thu Aug  4 10:46:35 2005
@@ -50,7 +50,7 @@
   (void) s;
   
 #if 0
-  // see System::derived_mark()
+  // see System::derived_mark () const
   Grob_array *ga = unsmob_grob_array (s); 
   for (int i = 0; i < ga->grobs_.size(); i++)
     scm_gc_mark (ga->grobs_[i]->self_scm ());
Index: lilypond/lily/hara-kiri-engraver.cc
diff -u lilypond/lily/hara-kiri-engraver.cc:1.16 
lilypond/lily/hara-kiri-engraver.cc:1.17
--- lilypond/lily/hara-kiri-engraver.cc:1.16    Tue Jul 26 22:24:30 2005
+++ lilypond/lily/hara-kiri-engraver.cc Thu Aug  4 10:46:35 2005
@@ -21,12 +21,18 @@
   DECLARE_ACKNOWLEDGER (grob);
   virtual void add_element (Grob *e);
   void start_translation_timestep ();
-
+  virtual void derived_mark () const;
   SCM interesting_;
 public:
   TRANSLATOR_DECLARATIONS (Hara_kiri_engraver);
 };
 
+void
+Hara_kiri_engraver::derived_mark () const
+{
+  scm_gc_mark (interesting_);
+}
+  
 void
 Hara_kiri_engraver::start_translation_timestep ()
 {
Index: lilypond/lily/ly-module.cc
diff -u lilypond/lily/ly-module.cc:1.46 lilypond/lily/ly-module.cc:1.47
--- lilypond/lily/ly-module.cc:1.46     Mon Aug  1 20:15:09 2005
+++ lilypond/lily/ly-module.cc  Thu Aug  4 10:46:35 2005
@@ -162,9 +162,10 @@
   SCM old_tab = scm_stand_in_procs;
   SCM new_tab = scm_make_weak_key_hash_table (scm_from_int (257));
   
-  new_tab = scm_internal_hash_fold ((Hash_closure_function) & redefine_keyval,
+  new_tab = scm_internal_hash_fold ((Hash_closure_function) &redefine_keyval,
                                    NULL,
-                                   new_tab, old_tab);
+                                   new_tab,
+                                   old_tab);
 
   scm_stand_in_procs = new_tab;
 }
Index: lilypond/lily/stanza-number-engraver.cc
diff -u lilypond/lily/stanza-number-engraver.cc:1.43 
lilypond/lily/stanza-number-engraver.cc:1.44
--- lilypond/lily/stanza-number-engraver.cc:1.43        Tue Jul 26 22:24:30 2005
+++ lilypond/lily/stanza-number-engraver.cc     Thu Aug  4 10:46:35 2005
@@ -13,18 +13,20 @@
 {
   Item *text_;
 
-  /*
-    This is naughty, since last_stanza_ may be GCd from under us.  But
-    since we don't look at the contents, we are/should be (knock on
-    wood) OK.
-  */
   SCM last_stanza_;
 public:
   TRANSLATOR_DECLARATIONS (Stanza_number_engraver);
   void process_music ();
+  virtual void derived_mark () const;
   void stop_translation_timestep ();
   DECLARE_ACKNOWLEDGER (lyric_syllable);
 };
+
+void
+Stanza_number_engraver::derived_mark () const
+{
+  scm_gc_mark (last_stanza_);
+}
 
 /*
   TODO: should make engraver that collects all the stanzas on a higher
Index: lilypond/lily/time-signature-engraver.cc
diff -u lilypond/lily/time-signature-engraver.cc:1.65 
lilypond/lily/time-signature-engraver.cc:1.66
--- lilypond/lily/time-signature-engraver.cc:1.65       Sun Jul 24 18:58:42 2005
+++ lilypond/lily/time-signature-engraver.cc    Thu Aug  4 10:46:35 2005
@@ -20,11 +20,20 @@
   SCM last_time_fraction_;
 
 protected:
+  virtual void derived_mark () const;
   void stop_translation_timestep ();
   void process_music ();
 public:
   TRANSLATOR_DECLARATIONS (Time_signature_engraver);
 };
+
+
+void
+Time_signature_engraver::derived_mark () const
+{
+  scm_gc_mark (last_time_fraction_);
+}
+
 
 Time_signature_engraver::Time_signature_engraver ()
 {
Index: lilypond/lily/volta-engraver.cc
diff -u lilypond/lily/volta-engraver.cc:1.65 
lilypond/lily/volta-engraver.cc:1.66
--- lilypond/lily/volta-engraver.cc:1.65        Tue Jul 26 22:24:30 2005
+++ lilypond/lily/volta-engraver.cc     Thu Aug  4 10:46:35 2005
@@ -32,10 +32,10 @@
   DECLARE_ACKNOWLEDGER (bar_line);
   
   virtual void finalize ();
-
+  virtual void derived_mark () const;
   void stop_translation_timestep ();
   void process_music ();
-
+  
   Moment started_mom_;
   Spanner *volta_span_;
   Spanner *end_volta_span_;
@@ -44,6 +44,13 @@
 
   bool staff_eligible ();
 };
+
+void
+Volta_engraver::derived_mark () const
+{
+  scm_gc_mark (staff_);
+  scm_gc_mark (start_string_);
+}
 
 Volta_engraver::Volta_engraver ()
 {


_______________________________________________
Lilypond-cvs mailing list
Lilypond-cvs@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to