+ free(win->_y[i]);
+ free(win->_firstch);
+ free(win->_lastch);
+ wp = win->_nextp;
+ while (wp != win) {
+ np = wp->_nextp;
+ delwin(wp);
+ wp = np;
+ }
+ }
+ else {
+ /*
+ * If we are a subwindow, take ourselves out of the
+ * list. NOTE: if we are a subwindow, the minimum list
+ * is orig followed by this subwindow, so there are
+ * always at least two windows in the list.
+ */
+ for (wp = win->_nextp; wp->_nextp != win; wp = wp->_nextp)
+ continue;
+ wp->_nextp = win->_nextp;
+ }
+ free(win->_y);
+ free(win);