]> git.donarmstrong.com Git - lilypond.git/commitdiff
music-filter: don't set elements that might have been unset before filtering
authorDavid Kastrup <dak@gnu.org>
Fri, 30 Dec 2011 09:14:08 +0000 (10:14 +0100)
committerDavid Kastrup <dak@gnu.org>
Fri, 30 Dec 2011 09:14:08 +0000 (10:14 +0100)
scm/music-functions.scm

index 80de207c695825fe8b8184a611b2ff32bf3ccc14..81ad4e47c54dd5ca2a530854cae67cc8ae15a586 100644 (file)
@@ -82,9 +82,12 @@ First it recurses over the children, then the function is applied to
                           (inner-music-filter pred? e)
                           e))
           (filtered-es (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) es))))
-      (set! (ly:music-property music 'element) filtered-e)
-      (set! (ly:music-property music 'elements) filtered-es)
-      (set! (ly:music-property music 'articulations) filtered-as)
+      (if (not (null? e))
+         (set! (ly:music-property music 'element) filtered-e))
+      (if (not (null? es))
+         (set! (ly:music-property music 'elements) filtered-es))
+      (if (not (null? as))
+         (set! (ly:music-property music 'articulations) filtered-as))
       ;; if filtering emptied the expression, we remove it completely.
       (if (or (not (pred? music))
              (and (eq? filtered-es '()) (not (ly:music? e))