GNU bug report logs - #911
23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)

Previous Next

Package: emacs;

Reported by: Ian Miller <emacs <at> soroban.fastmail.fm>

Date: Sun, 7 Sep 2008 11:45:04 UTC

Severity: normal

Tags: unreproducible

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

Full log


Message #99 received at 911 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: "Tim Van Holder" <tim.vanholder <at> gmail.com>
To: "martin rudalics" <rudalics <at> gmx.at>
Cc: 598 <at> debbugs.gnu.org, "Chong Yidong" <cyd <at> stupidchicken.com>,
        911 <at> debbugs.gnu.org
Subject: Re: bug#598: 23.0.60; frame size issue (--geometry or default-frame-alist) when using customized default face
Date: Wed, 1 Oct 2008 11:52:47 +0200
On Wed, Oct 1, 2008 at 10:47 AM, martin rudalics <rudalics <at> gmx.at> wrote:
>> I'm also getting max-specpdl-size exceeded on C-x 5 2, so I cannot check
>> the
>> previously observed behaviour that even when the initial frame is
>> erratically
>> sized, subsequent frames are fine.
>
> That's most likely bug#911 (aka nine-eleven) see
>
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=911
>
> Could you try the recipe Chong gave there?

I tried a slightly different recipe (below) and that made the error go away.
I assume Chong's will work as well - I just wanted to set the inhibit
flag as early as possible (and I wasn't 100% sure whether or not the let
would use the defvar'd flag instead of its own scoped var).

--- faces.el.~1.425.~	2008-09-25 10:49:34.000000000 +0200
+++ faces.el	2008-10-01 11:48:01.000000000 +0200
@@ -1839,10 +1839,13 @@ variable with `setq'; this won't have th
 (declare-function x-get-resource "frame.c"
 		  (attribute class &optional component subclass))

+(defvar inhibit-frame-set-background-mode nil)
 (defun frame-set-background-mode (frame)
   "Set up display-dependent faces on FRAME.
 Display-dependent faces are those which have different definitions
 according to the `background-mode' and `display-type' frame parameters."
+  (unless inhibit-frame-set-background-mode
+    (setq inhibit-frame-set-background-mode t)
   (let* ((bg-resource
 	  (and (window-system frame)
 	       (x-get-resource "backgroundMode" "BackgroundMode")))
@@ -1914,7 +1917,8 @@ according to the `background-mode' and `
 	;; parameters, unless they have been locally modified.
 	(dolist (face (face-list))
 	  (unless (memq face locally-modified-faces)
-	    (face-spec-recalc face frame)))))))
+	    (face-spec-recalc face frame))))))
+      (setq inhibit-frame-set-background-mode nil)))

 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




This bug report was last modified 16 years and 234 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.