--- tcl_commands.c	Fri Jun 29 12:38:00 2001
+++ tcl_commands.c	Tue Aug  7 22:55:11 2001
@@ -676,7 +676,14 @@
 	{
+	    union {
+		ClientData handle;
+		int fd;
+	    } handle;
+	    FILE *f;
 	    Tcl_Channel chan;
 	    char *method = Tcl_GetString(objv[3]);
+	    f = ApacheUpload_FILE(upload);
+	    handle.fd = f ? fileno(f) : -1;
 	    if (!strcmp(method, "channel"))
 	    {
-		if (ApacheUpload_FILE(upload) != NULL)
+		if (handle.fd != -1)
 		{
@@ -684,4 +690,3 @@
 		    char *channelname = NULL;
-		    chan = Tcl_MakeFileChannel((ClientData)fileno(
-			ApacheUpload_FILE(upload)), TCL_READABLE);
+		    chan = Tcl_MakeFileChannel(handle.handle, TCL_READABLE);
 		    Tcl_RegisterChannel(interp, chan);
@@ -709,4 +714,3 @@
 
-		chan = Tcl_MakeFileChannel((ClientData)fileno(
-		    ApacheUpload_FILE(upload)), TCL_READABLE);
+		chan = Tcl_MakeFileChannel(handle.handle, TCL_READABLE);
 		Tcl_SetChannelOption(interp, chan, "-translation", "binary");
@@ -736,4 +740,3 @@
 		    bytes = Tcl_Alloc(ApacheUpload_size(upload));
-		    chan = Tcl_MakeFileChannel((ClientData)fileno(
-			ApacheUpload_FILE(upload)), TCL_READABLE);
+		    chan = Tcl_MakeFileChannel(handle.handle, TCL_READABLE);
 		    Tcl_SetChannelOption(interp, chan, "-translation", "binary");
