diff --git a/src/os_win32.c b/src/os_win32.c
index 0de3d64..0607bd2 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -5210,11 +5210,9 @@
     job->jv_job_object = jo;
     job->jv_status = JOB_STARTED;
 
-    if (!use_file_for_in)
-	CloseHandle(ifd[0]);
-    if (!use_file_for_out)
-	CloseHandle(ofd[1]);
-    if (!use_out_for_err && !use_file_for_err)
+    CloseHandle(ifd[0]);
+    CloseHandle(ofd[1]);
+    if (!use_out_for_err && !use_null_for_err)
 	CloseHandle(efd[1]);
 
     job->jv_channel = channel;
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 0121deb..251de60 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -533,27 +533,39 @@
     call assert_equal(1, found_send)
     call assert_equal(1, found_recv)
     call assert_equal(1, found_stop)
+    " On MS-Windows need to sleep for a moment to be able to delete the file.
+    sleep 10m
     call delete('Xlog')
   endtry
 endfunc
 
+func Stop_g_job()
+  call job_stop(g:job)
+  if has('win32')
+    " On MS-Windows the server must close the file handle before we are able
+    " to delete the file.
+    call WaitFor('job_status(g:job) == "dead"')
+    sleep 10m
+  endif
+endfunc
+
 func Test_nl_read_file()
   if !has('job')
     return
   endif
   call ch_log('Test_nl_read_file()')
   call writefile(['echo something', 'echoerr wrong', 'double this'], 'Xinput')
-  let job = job_start(s:python . " test_channel_pipe.py",
+  let g:job = job_start(s:python . " test_channel_pipe.py",
 	\ {'in_io': 'file', 'in_name': 'Xinput'})
-  call assert_equal("run", job_status(job))
+  call assert_equal("run", job_status(g:job))
   try
-    let handle = job_getchannel(job)
+    let handle = job_getchannel(g:job)
     call assert_equal("something", ch_readraw(handle))
     call assert_equal("wrong", ch_readraw(handle, {'part': 'err'}))
     call assert_equal("this", ch_readraw(handle))
     call assert_equal("AND this", ch_readraw(handle))
   finally
-    call job_stop(job)
+    call Stop_g_job()
     call delete('Xinput')
   endtry
 endfunc
@@ -563,18 +575,18 @@
     return
   endif
   call ch_log('Test_nl_write_out_file()')
-  let job = job_start(s:python . " test_channel_pipe.py",
+  let g:job = job_start(s:python . " test_channel_pipe.py",
 	\ {'out_io': 'file', 'out_name': 'Xoutput'})
-  call assert_equal("run", job_status(job))
+  call assert_equal("run", job_status(g:job))
   try
-    let handle = job_getchannel(job)
+    let handle = job_getchannel(g:job)
     call ch_sendraw(handle, "echo line one\n")
     call ch_sendraw(handle, "echo line two\n")
     call ch_sendraw(handle, "double this\n")
     call WaitFor('len(readfile("Xoutput")) > 2')
     call assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))
   finally
-    call job_stop(job)
+    call Stop_g_job()
     call delete('Xoutput')
   endtry
 endfunc
@@ -584,18 +596,18 @@
     return
   endif
   call ch_log('Test_nl_write_err_file()')
-  let job = job_start(s:python . " test_channel_pipe.py",
+  let g:job = job_start(s:python . " test_channel_pipe.py",
 	\ {'err_io': 'file', 'err_name': 'Xoutput'})
-  call assert_equal("run", job_status(job))
+  call assert_equal("run", job_status(g:job))
   try
-    let handle = job_getchannel(job)
+    let handle = job_getchannel(g:job)
     call ch_sendraw(handle, "echoerr line one\n")
     call ch_sendraw(handle, "echoerr line two\n")
     call ch_sendraw(handle, "doubleerr this\n")
     call WaitFor('len(readfile("Xoutput")) > 2')
     call assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))
   finally
-    call job_stop(job)
+    call Stop_g_job()
     call delete('Xoutput')
   endtry
 endfunc
@@ -605,11 +617,11 @@
     return
   endif
   call ch_log('Test_nl_write_both_file()')
-  let job = job_start(s:python . " test_channel_pipe.py",
+  let g:job = job_start(s:python . " test_channel_pipe.py",
 	\ {'out_io': 'file', 'out_name': 'Xoutput', 'err_io': 'out'})
-  call assert_equal("run", job_status(job))
+  call assert_equal("run", job_status(g:job))
   try
-    let handle = job_getchannel(job)
+    let handle = job_getchannel(g:job)
     call ch_sendraw(handle, "echoerr line one\n")
     call ch_sendraw(handle, "echo line two\n")
     call ch_sendraw(handle, "double this\n")
@@ -617,7 +629,7 @@
     call WaitFor('len(readfile("Xoutput")) > 5')
     call assert_equal(['line one', 'line two', 'this', 'AND this', 'that', 'AND that'], readfile('Xoutput'))
   finally
-    call job_stop(job)
+    call Stop_g_job()
     call delete('Xoutput')
   endtry
 endfunc
diff --git a/src/version.c b/src/version.c
index 7bf6d7c..fbe8d57 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2301,
+/**/
     2300,
 /**/
     2299,
