check ww_haspty before closing ww_pty and ww_tty.
authorEdward Wang <edward@ucbvax.Berkeley.EDU>
Sat, 27 Aug 1983 08:29:26 +0000 (00:29 -0800)
committerEdward Wang <edward@ucbvax.Berkeley.EDU>
Sat, 27 Aug 1983 08:29:26 +0000 (00:29 -0800)
SCCS-vsn: usr.bin/window/wwclose.c 3.4

usr/src/usr.bin/window/wwclose.c

index d35d26c..25cc3ae 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)wwclose.c   3.3 83/08/23";
+static char *sccsid = "@(#)wwclose.c   3.4 83/08/26";
 #endif
 
 #include "ww.h"
 #endif
 
 #include "ww.h"
@@ -11,12 +11,15 @@ register struct ww *w;
        wwindex[w->ww_index] = 0;
        if (w->ww_state == WWS_HASPROC)
                (void) kill(w->ww_pid, SIGHUP);
        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);
+       if (w->ww_haspty) {
+               (void) close(w->ww_tty);
+               (void) close(w->ww_pty);
+       }
        wwfree((char **)w->ww_win);
        wwfree((char **)w->ww_cov);
        wwfree((char **)w->ww_buf);
        if (w->ww_fmap != 0)
                wwfree((char **)w->ww_fmap);
        wwfree((char **)w->ww_win);
        wwfree((char **)w->ww_cov);
        wwfree((char **)w->ww_buf);
        if (w->ww_fmap != 0)
                wwfree((char **)w->ww_fmap);
+       free((char *)w->ww_nvis);
        free((char *)w);
 }
        free((char *)w);
 }