Subject: Re: bug#37415: Asserting failure setting frame parameters to non-fixnum values in early-init.el

From: Eli Zaretskii <[email-masked]>
Date: Sun, 22 Sep 2019 19:26:26 +0300

> From: Juanma Barranquero <[email-masked]>
> Date: Sun, 22 Sep 2019 07:54:07 +0200
> Cc: martin rudalics <[email-masked]>, [email-masked]
> 
> With no init.el or early-init.el:
> 
>    emacs --eval "(let ((default-frame-alist '((left . 1000)))) (make-frame-command))"
> 
> works (it creates an additional frame, displaced to the right).
> 
>    emacs --eval "(let ((default-frame-alist '((left . (- 0))))) (make-frame-command))"
>  
> lisp.h:1231: Emacs fatal error: assertion failed: FIXNUMP (a)
> 
> Or, equivalently,
> 
>   emacs -Q --no-site-file
> 
>   M-: (let ((default-frame-alist '((left . (- 0))))) (make-frame-command)) <RET>
> 
> so the bit about early-init.el seems like a red herring.

Indeed.  As always, it's my fault: the change you mentioned up-thread
modified the order of code execution: where previously, if
f->size_hint_flags were set, we didn't look at the left and top frame
parameters, now we examine the frame parameters _before_ looking at
size_hint_flags, and thus can try to interpret values of top and left
we never did before.

So I think Martin's patch is going in the right direction, but we
could do it even cleaner, see my other mail.