From a2c7fbaa892b59a590b4635ddd184ca0487a38e3 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Fri, 30 Dec 2011 10:14:08 +0100 Subject: [PATCH] music-filter: don't set elements that might have been unset before filtering --- scm/music-functions.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 80de207c69..81ad4e47c5 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -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)) -- 2.39.2