From eb9386f47dc3726f169fe49dea7a67b0cf494006 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sun, 22 Dec 2013 10:33:31 +0100 Subject: [PATCH] Issue 3746: Fix unfold-repeats-fully with alternatives When fewer alternatives than repeats are given, the _first_ alternative needs to get reused (the previous code wrongly used the last one). --- scm/music-functions.scm | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index d57a2e22bf..1d931bbcda 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -389,19 +389,17 @@ beats to be distinguished." (and (music-is-of-type? m 'unfolded-repeated-music) (make-sequential-music (ly:music-deep-copy - (let loop ((n (ly:music-property m 'repeat-count)) - (alts (ly:music-property m 'elements)) - (body (ly:music-property m 'element))) + (let ((n (ly:music-property m 'repeat-count)) + (alts (ly:music-property m 'elements)) + (body (ly:music-property m 'element))) (cond ((<= n 0) '()) - ((null? alts) - (cons body (loop (1- n) alts body))) + ((null? alts) (make-list n body)) (else - (cons* body (car alts) - (loop (1- n) - (if (pair? (cdr alts)) - (cdr alts) - alts) - body))))))))) + (concatenate + (zip (make-list n body) + (append! (make-list (max 0 (- n (length alts))) + (car alts)) + alts)))))))))) (unfold-repeats music))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -- 2.39.5