emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Eli Zaretskii
Subject: Re: address@hidden: RE: weird defadvice bug with byte-compilation]
Date: Sat, 17 Dec 2005 10:29:11 +0200

> 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?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]