]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 3251: set-default-paper-size bleeds over to subsequent file compilations
authorDavid Kastrup <dak@gnu.org>
Sun, 17 Mar 2013 12:16:51 +0000 (13:16 +0100)
committerDavid Kastrup <dak@gnu.org>
Sat, 23 Mar 2013 20:38:00 +0000 (21:38 +0100)
This patch lets set-default-paper-size copy $defaultpaper before
modifying it.  That way, restoring the original $defaultpaper at the
end of each processed file should also restore the paper dimensions.

scm/paper.scm

index fd600c9031c1f60d4bb01100ecf72ab5d3d1f7dd..4cd029b75e257b8e06fcf097e7b73ee8be15979f 100644 (file)
@@ -328,10 +328,14 @@ unless explicitly overriden in the name."
       (ly:warning (_ "Unknown paper size: ~a") name)))))
 
 (define-safe-public (set-default-paper-size name . rest)
-  (internal-set-paper-size
-   (ly:output-def-scope (eval '$defaultpaper (current-module)))
-   name
-   (memq 'landscape rest)))
+  (let* ((pap (module-ref (current-module) '$defaultpaper))
+         (new-paper (ly:output-def-clone pap))
+         (new-scope (ly:output-def-scope new-paper)))
+    (internal-set-paper-size
+     new-scope
+     name
+     (memq 'landscape rest))
+    (module-set! (current-module) '$defaultpaper new-paper)))
 
 (define-public (set-paper-size name . rest)
   (if (module-defined? (current-module) 'is-paper)