]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/music-functions.scm
Merge remote branch 'origin/release/unstable' into HEAD
[lilypond.git] / scm / music-functions.scm
index 592cff33c320ab0173e4ca319fa068f75ba0c829..05352b0953038c23babc807a6746b9a539453038 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -390,19 +390,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)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;