]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/stencil.scm
Issue 5131 Avoid possible segfault in stencil-with-color
[lilypond.git] / scm / stencil.scm
index f4b5eb8bade977815f06d34d314778eea78b7059..391e80882f3f42f73e5fba4358ff52427f8de46e 100644 (file)
@@ -238,10 +238,7 @@ the more angular the shape of the parenthesis."
 
 (define-public (make-transparent-box-stencil xext yext)
   "Make a transparent box."
-  (ly:make-stencil
-   (list 'transparent-stencil
-         (ly:stencil-expr (make-filled-box-stencil xext yext)))
-   xext yext))
+  (ly:stencil-outline empty-stencil (make-filled-box-stencil xext yext)))
 
 (define-public (make-filled-box-stencil xext yext)
   "Make a filled box."
@@ -730,10 +727,12 @@ box, remains the same."
     replaced-stil))
 
 (define-public (stencil-with-color stencil color)
-  (ly:make-stencil
-   (list 'color color (ly:stencil-expr stencil))
-   (ly:stencil-extent stencil X)
-   (ly:stencil-extent stencil Y)))
+  (if (color? color)
+      (ly:make-stencil
+       (list 'color color (ly:stencil-expr stencil))
+       (ly:stencil-extent stencil X)
+       (ly:stencil-extent stencil Y))
+      stencil))
 
 (define*-public (stencil-whiteout-outline
                  stil #:optional (thickness 0.3) (color white)
@@ -817,6 +816,7 @@ based on @var{style}."
                       ((eq? style 'rounded-box) 3)
                       (else 0))))))
     (cond
+     ((eq? style 'special) stil)
      ((eq? style 'outline) (stencil-whiteout-outline stil thick))
      ((eq? style 'rounded-box) (stencil-whiteout-box stil thick (* 2 thick)))
      (else (stencil-whiteout-box stil thick)))))