init: fix more cases of leaking pid_file

Signed-off-by: Jens Axboe <axboe@fb.com>
diff --git a/init.c b/init.c
index 215b60d..6324dce 100644
--- a/init.c
+++ b/init.c
@@ -1842,7 +1842,7 @@
 			if (!strncmp(opt, "name", 4) && td) {
 				ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
 				if (ret)
-					return 0;
+					goto out_free;
 				td = NULL;
 			}
 			if (!td) {
@@ -1857,7 +1857,7 @@
 
 				td = get_new_job(global, &def_thread, 1);
 				if (!td || ioengine_load(td))
-					return 0;
+					goto out_free;
 				fio_options_set_ioengine_opts(l_opts, td);
 			}
 
@@ -1879,7 +1879,7 @@
 			if (!ret && !strcmp(opt, "ioengine")) {
 				free_ioengine(td);
 				if (ioengine_load(td))
-					return 0;
+					goto out_free;
 				fio_options_set_ioengine_opts(l_opts, td);
 			}
 			break;
@@ -2005,6 +2005,10 @@
 		optind++;
 	}
 
+out_free:
+	if (pid_file)
+		free(pid_file);
+
 	return ini_idx;
 }