@@ -258,15 +258,15 @@ dprintf("Got BIO_SET_CLOSE"); BIO_set_shutdown(bio, num); break; case BIO_CTRL_EOF: dprintf("Got BIO_CTRL_EOF"); - ret = Tcl_Eof(chan); + ret = ((chan) ? Tcl_Eof(chan) : 1); break; case BIO_CTRL_PENDING: dprintf("Got BIO_CTRL_PENDING"); - ret = ((chan) ? Tcl_InputBuffered(chan) : 0); + ret = ((chan) ? ((Tcl_InputBuffered(chan) ? 1 : 0)) : 0); dprintf("BIO_CTRL_PENDING(%d)", (int) ret); break; case BIO_CTRL_WPENDING: dprintf("Got BIO_CTRL_WPENDING"); ret = 0; @@ -274,11 +274,11 @@ case BIO_CTRL_DUP: dprintf("Got BIO_CTRL_DUP"); break; case BIO_CTRL_FLUSH: dprintf("Got BIO_CTRL_FLUSH"); - ret = ((Tcl_WriteRaw(chan, "", 0) >= 0) ? 1 : -1); + ret = ((chan) && (Tcl_WriteRaw(chan, "", 0) >= 0) ? 1 : -1); dprintf("BIO_CTRL_FLUSH returning value %li", ret); break; default: dprintf("Got unknown control command (%i)", cmd); ret = -2;