{
        /* parallel */
 #ifdef WIN32
+       if (thread_handles == NULL)
+           thread_handles = pg_malloc(user_opts.jobs * sizeof(HANDLE));
+
+       if (exec_thread_args == NULL)
+       {
+           int         i;
+
+           exec_thread_args = pg_malloc(user_opts.jobs * sizeof(exec_thread_arg *));
+
+           /*
+            * For safety and performance, we keep the args allocated during
+            * the entire life of the process, and we don't free the args in a
+            * thread different from the one that allocated it.
+            */
+           for (i = 0; i < user_opts.jobs; i++)
+               exec_thread_args[i] = pg_malloc0(sizeof(exec_thread_arg));
+       }
+
        cur_thread_args = (void **) exec_thread_args;
 #endif
        /* harvest any dead children */
            /* fork failed */
            pg_log(PG_FATAL, "could not create worker process: %s\n", strerror(errno));
 #else
-       if (thread_handles == NULL)
-           thread_handles = pg_malloc(user_opts.jobs * sizeof(HANDLE));
-
-       if (exec_thread_args == NULL)
-       {
-           int         i;
-
-           exec_thread_args = pg_malloc(user_opts.jobs * sizeof(exec_thread_arg *));
-
-           /*
-            * For safety and performance, we keep the args allocated during
-            * the entire life of the process, and we don't free the args in a
-            * thread different from the one that allocated it.
-            */
-           for (i = 0; i < user_opts.jobs; i++)
-               exec_thread_args[i] = pg_malloc0(sizeof(exec_thread_arg));
-       }
-
        /* use first empty array element */
        new_arg = exec_thread_args[parallel_jobs - 1];
 
    {
        /* parallel */
 #ifdef WIN32
+       if (thread_handles == NULL)
+           thread_handles = pg_malloc(user_opts.jobs * sizeof(HANDLE));
+
+       if (transfer_thread_args == NULL)
+       {
+           int         i;
+
+           transfer_thread_args = pg_malloc(user_opts.jobs * sizeof(transfer_thread_arg *));
+
+           /*
+            * For safety and performance, we keep the args allocated during
+            * the entire life of the process, and we don't free the args in a
+            * thread different from the one that allocated it.
+            */
+           for (i = 0; i < user_opts.jobs; i++)
+               transfer_thread_args[i] = pg_malloc0(sizeof(transfer_thread_arg));
+       }
+
        cur_thread_args = (void **) transfer_thread_args;
 #endif
        /* harvest any dead children */
            /* fork failed */
            pg_log(PG_FATAL, "could not create worker process: %s\n", strerror(errno));
 #else
-       if (thread_handles == NULL)
-           thread_handles = pg_malloc(user_opts.jobs * sizeof(HANDLE));
-
-       if (transfer_thread_args == NULL)
-       {
-           int         i;
-
-           transfer_thread_args = pg_malloc(user_opts.jobs * sizeof(transfer_thread_arg *));
-
-           /*
-            * For safety and performance, we keep the args allocated during
-            * the entire life of the process, and we don't free the args in a
-            * thread different from the one that allocated it.
-            */
-           for (i = 0; i < user_opts.jobs; i++)
-               transfer_thread_args[i] = pg_malloc0(sizeof(transfer_thread_arg));
-       }
-
        /* use first empty array element */
        new_arg = transfer_thread_args[parallel_jobs - 1];