From 8664d7393a9eca3d3f341159f97e7fa75723c038 Mon Sep 17 00:00:00 2001 From: hanwen Date: Wed, 11 Feb 2004 10:53:15 +0000 Subject: [PATCH] * scm/part-combiner.scm (make-autochange-music): use accumulator. Fixes stack overflow. --- ChangeLog | 4 ++++ scm/part-combiner.scm | 27 +++++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index c04e4e79e3..7f41d31b11 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,10 @@ 2004-02-11 Han-Wen Nienhuys + * scm/part-combiner.scm (make-autochange-music): use + accumulator. Fixes stack overflow. + + * lily/*: rename brew_molecule -> print , molecule-callback -> print-function * lily/*: rename brew_molecule -> print , molecule-callback -> print-function diff --git a/scm/part-combiner.scm b/scm/part-combiner.scm index 8996fa2739..24ff8b9d77 100644 --- a/scm/part-combiner.scm +++ b/scm/part-combiner.scm @@ -549,9 +549,9 @@ Only set if not set previously. (define-public (make-autochange-music music) - (define (generate-split-list event-list) + (define (generate-split-list event-list acc) (if (null? event-list) - '() + acc (let* ((evs (map car (cdar event-list))) (now (caar event-list)) @@ -564,22 +564,29 @@ Only set if not set previously. ;; tail recursive. (if (and pitch (not (= (ly:pitch-steps pitch) 0))) - (cons (cons now (sign (ly:pitch-steps pitch))) - (generate-split-list (cdr event-list))) - (generate-split-list (cdr event-list))) - ))) + (generate-split-list + (cdr event-list) + (cons (cons now (sign (ly:pitch-steps pitch))) acc)) + (generate-split-list (cdr event-list) acc) + )) + )) (set! noticed '()) (let* ((m (make-music-by-name 'AutoChangeMusic)) (context (ly:run-translator music part-combine-listener)) - (evs (last-pair noticed)) ) + (evs (last-pair noticed)) + (split + (reverse! + (generate-split-list (if (pair? evs) + (reverse! (cdar evs) '()) '()) + '()) + '()) + )) (ly:set-mus-property! m 'element music) - (ly:set-mus-property! - m 'split-list - (generate-split-list (if (pair? evs) (reverse! (cdar evs) '()) '())) ) + (ly:set-mus-property! m 'split-list split) (set! noticed '()) m -- 2.39.5