Re: address@hidden: RE: weird defadvice bug with byte-compilation]

> From: "Richard M. Stallman" <address@hidden>
> CC: address@hidden, address@hidden
> Date: Fri, 16 Dec 2005 20:05:24 -0500
>
> + /* Do this before the call to w32_window, since that can call Feval
> + (e.g., to compute the frame's menu bar) and throw an error, which
> + will leave this frame unregistered. */
> + Vframe_list = Fcons (frame, Vframe_list);
> +
> w32_window (f, window_prompting, minibuffer_only);
> x_icon (f, parameters);
> x_make_gc (f);
>
>
> Changing Vframe_list so early, before calling w32_window, could be
> dangerous. What if some part of window creation fails, or x_icon, or
> x_make_gc? While I am not sure of how things worn on Windows, if
> those fail I suspect it will leave a bad situation. You would not want
> such a frame to be considered live.
AFAICS, only x_icon can throw an error. We could arrange for removing
the failed frame from the list (and free its glyph matrices while at
that) if an error is thrown.
> I think the right fix is keep the setting of Vframe_list where it was,
> and instead move the creation of the menu bar out of w32_window and
> put it at a later place in Fx_create_frame.
I agree. I asked Jason whether such a change could do any harm on
Windows.
So I understand from your response that it is okay for Fx_create_frame
to be entered recursively, yes?