diff --git a/src/os_unix.c b/src/os_unix.c
index bcfffb4..ed2b129 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5037,16 +5037,15 @@
 
 #if defined(FEAT_JOB) || defined(PROTO)
     void
-mch_start_job(char **argv, job_T *job, jobopt_T *options)
+mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
 {
     pid_t	pid;
+# ifdef FEAT_CHANNEL
     int		fd_in[2];	/* for stdin */
     int		fd_out[2];	/* for stdout */
     int		fd_err[2];	/* for stderr */
-# ifdef FEAT_CHANNEL
     channel_T	*channel = NULL;
     int		use_out_for_err = options->jo_io[PART_ERR] == JIO_OUT;
-#endif
 
     /* default is to fail */
     job->jv_status = JOB_FAILED;
@@ -5055,7 +5054,6 @@
     fd_err[0] = -1;
 
     /* TODO: without the channel feature connect the child to /dev/null? */
-# ifdef FEAT_CHANNEL
     /* Open pipes for stdin, stdout, stderr. */
     if (pipe(fd_in) < 0 || pipe(fd_out) < 0
 				    || (!use_out_for_err && pipe(fd_err) < 0))
@@ -5114,7 +5112,6 @@
 	close(1);
 	ignored = dup(fd_out[1]);
 	close(fd_out[1]);
-
 # endif
 
 	/* See above for type of argv. */
@@ -5131,14 +5128,12 @@
     job->jv_channel = channel;
 # endif
 
+# ifdef FEAT_CHANNEL
     /* child stdin, stdout and stderr */
     close(fd_in[0]);
     close(fd_out[1]);
-# ifdef FEAT_CHANNEL
     if (!use_out_for_err)
-# endif
 	close(fd_err[1]);
-# ifdef FEAT_CHANNEL
     channel_set_pipes(channel, fd_in[1], fd_out[0],
 				    use_out_for_err ? INVALID_FD : fd_err[0]);
     channel_set_job(channel, job, options);
@@ -5149,11 +5144,10 @@
 
     return;
 
-failed:
+failed: ;
 # ifdef FEAT_CHANNEL
     if (channel != NULL)
 	channel_free(channel);
-# endif
     if (fd_in[0] >= 0)
     {
 	close(fd_in[0]);
@@ -5169,6 +5163,7 @@
 	close(fd_err[0]);
 	close(fd_err[1]);
     }
+# endif
 }
 
     char *
