From f1cfca42bddf7f4baaea558b49170df8df50bfea Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sun, 15 Sep 2002 00:06:15 +0000 Subject: [PATCH] * lily/sequential-iterator.cc (Sequential_iterator): init list_ * lily/translator-def.cc (Translator_def): make a GC proof copy constructor. --- ChangeLog | 9 +++++++++ Documentation/user/tutorial.itely | 3 ++- input/test/GNUmakefile | 2 +- lily/folded-repeat-iterator.cc | 9 +++++++-- lily/lyric-combine-music-iterator.cc | 6 ++++-- lily/part-combine-music-iterator.cc | 6 ++++-- lily/percent-repeat-iterator.cc | 1 + lily/sequential-iterator.cc | 6 ++---- lily/translator-def.cc | 20 ++++++++++++++++++-- scm/lily.scm | 2 +- scripts/lilypond-book.py | 6 ++++-- 11 files changed, 53 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index f2714db5d5..2d776618e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ +2002-09-15 Han-Wen Nienhuys + + * lily/sequential-iterator.cc (Sequential_iterator): init list_ + + * lily/translator-def.cc (Translator_def): make a GC proof copy + constructor. + 2002-09-14 Han-Wen Nienhuys + * lily/percent-repeat-iterator.cc (process): quit iter. + * lily/simultaneous-music-iterator.cc (Simultaneous_music_iterator): protection bugfix. (get_pending_events): bugfix: don't use s twice. diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 1d351ba3e1..54968e2e27 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -500,7 +500,8 @@ g'4 ~ g' a'2 ~ a'4 @end quotation @separate -The key signature is set with the command ``@code{\key}'': +The key signature is set with the command ``@code{\key}''. One caution: +you need to specify whether the key is @code{\major} or @code{\minor}. @quotation @example \key d \major diff --git a/input/test/GNUmakefile b/input/test/GNUmakefile index 82fc916468..e33a3600a5 100644 --- a/input/test/GNUmakefile +++ b/input/test/GNUmakefile @@ -15,4 +15,4 @@ EXTRA_DISTFILES=features.abc include $(depth)/make/stepmake.make -TITLE=LilyPond Feature Tests +TITLE=LilyPond Tips and Tricks diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc index 3a90567566..b2e07aed32 100644 --- a/lily/folded-repeat-iterator.cc +++ b/lily/folded-repeat-iterator.cc @@ -1,5 +1,5 @@ /* - repeated-music-iterator.cc -- implement Folded_repeat_iterator + folded-repeat-iterator.cc -- implement Folded_repeat_iterator source file of the GNU LilyPond music typesetter @@ -67,7 +67,7 @@ Folded_repeat_iterator::construct_children () main_iter_ = unsmob_iterator (get_iterator (mus->body ())); if (!main_iter_->ok ()) { - leave_body (); + leave_body (); enter_alternative (); } } @@ -121,12 +121,17 @@ Folded_repeat_iterator::enter_alternative () Repeated_music * mus = dynamic_cast (get_music ()); if (mus->alternatives ()) { + /* + ugh. + */ Simultaneous_music_iterator * s = new Simultaneous_music_iterator; s->separate_contexts_b_ = true; s->init_translator (mus, report_to ()); alternative_iter_ = s; alternative_iter_->construct_children (); + + scm_gc_unprotect_object (s->self_scm()); } } diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index fc4d7c2b41..127945b3d6 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -127,8 +127,10 @@ Lyric_combine_music_iterator::process (Moment m) void Lyric_combine_music_iterator::do_quit () { - if (music_iter_) music_iter_->quit(); - if (lyric_iter_) lyric_iter_->quit(); + if (music_iter_) + music_iter_->quit(); + if (lyric_iter_) + lyric_iter_->quit(); } Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src) diff --git a/lily/part-combine-music-iterator.cc b/lily/part-combine-music-iterator.cc index 9c7efd35c5..73c7ae7924 100644 --- a/lily/part-combine-music-iterator.cc +++ b/lily/part-combine-music-iterator.cc @@ -34,8 +34,10 @@ Part_combine_music_iterator::derived_mark () const void Part_combine_music_iterator::do_quit () { - if (first_iter_) first_iter_->quit(); - if (second_iter_) second_iter_->quit(); + if (first_iter_) + first_iter_->quit(); + if (second_iter_) + second_iter_->quit(); } Part_combine_music_iterator::Part_combine_music_iterator (Part_combine_music_iterator const &src) diff --git a/lily/percent-repeat-iterator.cc b/lily/percent-repeat-iterator.cc index 4e8dac48a9..d1bdfb1f9b 100644 --- a/lily/percent-repeat-iterator.cc +++ b/lily/percent-repeat-iterator.cc @@ -66,6 +66,7 @@ Percent_repeat_iterator::process (Moment m) if (finish_mom_ <= m ) { + child_iter_->quit(); child_iter_ = 0; } } diff --git a/lily/sequential-iterator.cc b/lily/sequential-iterator.cc index 7c6f6c4a46..9424e84d2d 100644 --- a/lily/sequential-iterator.cc +++ b/lily/sequential-iterator.cc @@ -39,6 +39,7 @@ Grace_fixup *get_grace_fixups (SCM cursor); Sequential_iterator::Sequential_iterator () { here_mom_ = Moment (0); + list_ = SCM_EOL; grace_fixups_ = 0; iter_ =0; } @@ -64,10 +65,7 @@ Sequential_iterator::Sequential_iterator (Sequential_iterator const &src) cursor_ = src.cursor_; list_ = src.cursor_; here_mom_ = src.here_mom_; - if (src.iter_) - iter_ = src.iter_->clone (); - else - iter_ = 0; + iter_ = (src.iter_) ? src.iter_->clone () : 0; if (iter_) scm_gc_unprotect_object (iter_->self_scm()); diff --git a/lily/translator-def.cc b/lily/translator-def.cc index 14d7c9f9f8..14a4fe5404 100644 --- a/lily/translator-def.cc +++ b/lily/translator-def.cc @@ -50,7 +50,11 @@ Translator_def::Translator_def () end_consists_name_list_ = SCM_EOL; property_ops_ = SCM_EOL; type_name_ = SCM_EOL; + + smobify_self(); + } + Translator_def::~Translator_def () { } @@ -58,6 +62,16 @@ Translator_def::~Translator_def () Translator_def::Translator_def (Translator_def const & s) : Input (s) { + type_aliases_ = SCM_EOL; + translator_group_type_ = SCM_EOL; + accepts_name_list_ = SCM_EOL; + consists_name_list_ = SCM_EOL; + end_consists_name_list_ = SCM_EOL; + property_ops_ = SCM_EOL; + type_name_ = SCM_EOL; + + + smobify_self(); consists_name_list_ = scm_list_copy (s.consists_name_list_); end_consists_name_list_ = scm_list_copy (s.end_consists_name_list_); accepts_name_list_ = scm_list_copy (s.accepts_name_list_); @@ -275,14 +289,16 @@ SCM Translator_def::clone_scm () const { Translator_def * t = new Translator_def (*this); - return t->unprotected_smobify_self (); + scm_gc_unprotect_object (t->self_scm()); + return t->self_scm(); } SCM Translator_def::make_scm () { Translator_def* t = new Translator_def; - return t->unprotected_smobify_self (); + scm_gc_unprotect_object (t->self_scm()); + return t->self_scm(); } void diff --git a/scm/lily.scm b/scm/lily.scm index eb081496e1..7575993e64 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -18,7 +18,7 @@ ;(debug-enable 'debug) ;(debug-enable 'backtrace) ;(read-enable 'positions) -;(set-debug-cell-accesses! #f) +;(set-debug-cell-accesses! 15000) diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index d048055e75..d1882ce2ec 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -113,6 +113,8 @@ kpse = os.popen ('kpsexpand \$TEXMF').read() kpse = re.sub('[ \t\n]+$','', kpse) type1_paths = os.popen ('kpsewhich -expand-path=\$T1FONTS').read () +binary = 'lilypond' +#binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond' environment = { # TODO: * prevent multiple addition. # * clean TEXINPUTS, MFINPUTS, TFMFONTS, @@ -1144,8 +1146,8 @@ def compile_all_files (chunks): if g_outdir: lilyopts = lilyopts + '--dep-prefix=' + g_outdir + '/' texfiles = string.join (tex, ' ') - cmd = 'lilypond --header=texidoc %s %s %s' \ - % (lilyopts, g_extra_opts, texfiles) + cmd = '%s --header=texidoc %s %s %s' \ + % (binary, lilyopts, g_extra_opts, texfiles) system (cmd) -- 2.39.5