Subject: bug#11984: 24.1; segfault while deleting a window

From: martin rudalics <[email-masked]>
Date: Sat, 21 Jul 2012 13:03:24 +0200

>>> But for long-term safety, I think
 >>> decode_any_windows had better signal an error if the window's frame
 >>> isn't live.  But I'm not sure if there's any subtle reliance in existing
 >>> code on allowing window functions to be called for windows on dead
 >>> frames---anyone know?
 >> Maybe the best way to find out is to install such a change?
 >
 > Done in the trunk.

I must admit that I never looked at the definition of decode_any_window.
I always assumed that it _does_ check whether the window either has a
buffer or is in a window tree.  So I think behavior is still broken
because a window can have been deleted while its frame is still alive.

IMHO the right fix is to throw an error for

   if (NILP (w->buffer) && NILP (w->hchild) && NILP (w->vchild))

which means that some functions when called on dead windows (like
`delete-window') will now throw an error.  These will have to be caught
on the Elisp level.

martin