[ Not yet submitted to xemacs-patches, because I want opinions on this.  ]
     In XEmacs 21.4.5, I've noticed that `delete-windows-on' is broken
when multiple devices are used.  To reproduce:
* Under X-windows, start: xemacs -q -vanilla
* M-x start-gnuserv
* Start up an xterm, and run gnuclient in the xterm (unset $DISPLAY
  before running gnuclient).
* In the xterm XEmacs, create a buffer called "ddd".
* Go back to the X-window XEmacs, and make sure that only the *scratch*
  buffer is shown (`C-x 1' if necessary).
* In the X-windows *scratch* buffer, eval `(delete-windows-on "ddd")'
Note that the buffer "ddd" in the xterm is unaffected; the window should
have been deleted, but wasn't.
     I think I've tracked this problem down to window_loop(), which
seems to have two bugs:
1. When determining the last window on a device, Fprevious_window() is
   allowed to search for windows across all devices, and is not
   restricted to the current device.  This can cause problems in the
   subsequent code that loops over all windows on a given device, as
   the "last window" may never be found (as the "last window" may be on
   a different device).
2. window_loop() does have code to prevent an infloop, due to bugs like
   the above:
	  /* Given the outstanding quality of the rest of this code,
	     I feel no shame about putting this piece of shit in. */
	  if (++lose_lose >= 500)
	    return Qnil;
   However, the "return Qnil" means that subsequent devices are never
   searched; I think this should really be a "break;", to allow
   subsequent devices to be searched.
I've attached a patch that addresses both of these.  Comments?  I'll
submit an official patch if people think this is correct.
-- 
	Darryl Okahata
	darrylo(a)soco.agilent.com
DISCLAIMER: this message is the author's personal opinion and does not
constitute the support, opinion, or policy of Agilent Technologies, or
of the little green men that have been following him all day.