On Sat, Sep 21, 2019 at 11:14 AM Eli Zaretskii 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