# include "curses.ext" /* * This routine deletes a window and releases it back to the system. * * 4/6/83 (Berkeley) @(#)delwin.c 1.5 */ delwin(win) reg WINDOW *win; { reg int i; reg WINDOW *wp, *np; if (win->_orig == NULL) { /* * If we are the original window, delete the space for * all the subwindows, and the array of space as well. */ for (i = 0; i < win->_maxy && win->_y[i]; i++) cfree(win->_y[i]); wp = win->_nextp; while (wp != win) { np = wp->_nextp; delwin(wp); wp = np; } } else { /* * If we are a subwindow, take ourself 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; } cfree(win->_y); cfree(win->_firstch); cfree(win->_lastch); cfree(win); }