Subject: bug#17510: 24.3.91; Problem with `emacs --daemon' in cygw32 build

From: Eli Zaretskii <[email-masked]>
Date: Mon, 19 May 2014 19:46:56 +0300

> Date: Sun, 18 May 2014 15:36:11 -0400
> From: Ken Brown <[email-masked]>
> CC: [email-masked], [email-masked]
> 
> > If the Cygwin-w32 build wants more (or less) than one display_info
> > object, then that part _is_ specific to Cygwin, because the native
> > Windows build has only one such object that is never deleted.
> > 
> >> Can you reproduce it in the Windows build?
> > 
> > The native Windows build doesn't support --daemon, so no, I can't.
> > 
> >> I *think* what must be happening in the recipe that I gave for this bug
> >> is that every time a client frame is closed, x_delete_display is called.
> >>    Before Dmitry's change, this would actually delete something from a
> >> list.  Now it doesn't, and the server gets messed up and ultimately dies
> >> on the third attempt to create a client frame.
> > 
> > See above: try restoring that code for Cygwin only.
> > 
> >> Unless there's an obvious fix for this, it seems to me that we're far
> >> enough into the pretest that we should just revert to the old code, at
> >> least for emacs-24.
> > 
> > That would revert a useful cleanup, which I'm not sure is a good idea
> > at this point.
> 
> How does this look?

I guess it's OK for the branch, thanks.  But it strikes me that simply
replacing the car of dpyinfo->name_list_element by something like
"!!!DELETED DISPLAY!!!", or even just an empty string, would serve the
same purpose, and save us the nuisance of an additional list in
cygw32_display_name_list.  After all, all you need is to mark a
display deleted without actually deleting it, right?  IOW, the main
problem is in x_delete_display, and all the rest is just the overhead
you needed to fix that, correct?