- register struct ww **p;
-
- for (p = &wwhead; *p && *p != w; p = &(*p)->ww_next)
- ;
- if (*p == 0)
- return -1;
- *p = w->ww_next;
- if (curwin == w)
- curwin = wwhead;
- if (w->ww_state == WW_HASPROC)
- kill(w->ww_pid, SIGHUP);
- close(w->ww_tty);
- close(w->ww_pty);
- Wclose(w->ww_win);
- cfree(w);
- return 0;
+ wwindex[w->ww_index] = 0;
+ if (w->ww_state == WWS_HASPROC)
+ (void) kill(w->ww_pid, SIGHUP);
+ (void) close(w->ww_tty);
+ (void) close(w->ww_pty);
+ wwfree((char **)w->ww_win, w->ww_w.nr);
+ wwfree((char **)w->ww_cov, w->ww_w.nr);
+ wwfree((char **)w->ww_buf, w->ww_nline);
+ free((char *)w);