GNU bug report logs -
#37415
Asserting failure setting frame parameters to non-fixnum values in early-init.el
Previous Next
Full log
Message #44 received at 37415 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sat, Sep 21, 2019 at 11:14 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> . the FIXNUMP assertion is probably there for a reason; what is that
> reason?
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);
+
and these XINTs were transformed into XFIXNUM (which easserts) as part of a
big XFIXNUM/XFIXNAT change (by Tom Tromey, in
commit d1ec3a0a8e4d7d56ebc1e4fa743130b9974ac6a8 from 2018-08-07).
So, from my ignorance, it seems like the idea was always to set non-nums to
zero, and the assertion came by accident.
Juanma
[Message part 2 (text/html, inline)]
This bug report was last modified 5 years and 246 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.