patch 7.4.1306
Problem:    Job control doesn't work well on MS-Windows.
Solution:   Various fixes. (Ken Takata, Ozaki Kiichi , Yukihiro Nakadaira,
            Yasuhiro Matsumoto)
diff --git a/src/eval.c b/src/eval.c
index 30d5684..ece87de 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7720,8 +7720,7 @@
     static void
 job_free(job_T *job)
 {
-    /* TODO: free any handles */
-
+    mch_clear_job(job);
     vim_free(job);
 }
 
@@ -14369,9 +14368,11 @@
 		s = vim_strsave_shellescape(s, FALSE, TRUE);
 		if (s == NULL)
 		    goto theend;
+		ga_concat(&ga, s);
+		vim_free(s);
 	    }
-	    ga_concat(&ga, s);
-	    vim_free(s);
+	    else
+		ga_concat(&ga, s);
 	    if (li->li_next != NULL)
 		ga_append(&ga, ' ');
 #endif
@@ -21623,7 +21624,8 @@
 			    "process %ld %s", (long)job->jv_pid, status);
 # elif defined(WIN32)
 		vim_snprintf((char *)buf, NUMBUFLEN,
-			    "process %ld %s", (long)job->jv_pi.dwProcessId,
+			    "process %ld %s",
+			    (long)job->jv_proc_info.dwProcessId,
 			    status);
 # else
 		/* fall-back */