Curiouser and curiouser. 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)) so the bit about early-init.el seems like a red herring. On Sat, Sep 21, 2019 at 2:27 PM Eli Zaretskii wrote: > > From: Juanma Barranquero > > Date: Sat, 21 Sep 2019 12:02:51 +0200 > > Cc: martin rudalics , 37415@debbugs.gnu.org > > > > Before 572fe798cd0a00ad4a9050a7962cf8e8fbcc209b (from 2014-09-30), the > computation of left and top > > was done in w32_createwindow: > > > > /* When called with RES_TYPE_NUMBER, w32_get_arg will return zero > > for anything that is not a number and is not Qunbound. */ > > left = x_get_arg (dpyinfo, Qnil, Qleft, "left", "Left", > RES_TYPE_NUMBER); > > top = x_get_arg (dpyinfo, Qnil, Qtop, "top", "Top", > RES_TYPE_NUMBER); > > > > and anything not a number was turned to 0. > > > > In that commit you moved the code to my_create_window and used XINT: > > > > + /* When called with RES_TYPE_NUMBER, x_get_arg will return zero for > > + anything that is not a number and is not Qunbound. */ > > + left = x_get_arg (dpyinfo, Qnil, Qleft, "left", "Left", > RES_TYPE_NUMBER); > > + top = x_get_arg (dpyinfo, Qnil, Qtop, "top", "Top", RES_TYPE_NUMBER); > > + if (EQ (left, Qunbound)) > > + coords[0] = CW_USEDEFAULT; > > + else > > + coords[0] = XINT (left); > > + if (EQ (top, Qunbound)) > > + coords[1] = CW_USEDEFAULT; > > + else > > + coords[1] = XINT (top); > > + > > Yes, but contrary to the comment, in the case in point we don't get > zero from x_get_arg. Which is why I asked all those questions. >