[SV 49116] Check potential null pointer dereference.

* w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell
check for correctness.
diff --git a/w32/subproc/sub_proc.c b/w32/subproc/sub_proc.c
index af15dbc..69b3ae1 100644
--- a/w32/subproc/sub_proc.c
+++ b/w32/subproc/sub_proc.c
@@ -1195,7 +1195,7 @@
  *
  * Returns:  the buffer or NULL for failure
  *      Shell case:  sh_name a:/full/path/to/script argv[1] argv[2] ...
- *  Otherwise:   argv[0] argv[1] argv[2] ...
+ *      Otherwise:   argv[0] argv[1] argv[2] ...
  *
  * Notes/Dependencies:
  *   CreateProcess does not take an argv, so this command creates a
@@ -1212,15 +1212,15 @@
         unsigned int    bytes_required = 0;
         char*           command_line;
         char*           command_line_i;
-        int  cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
         int have_sh = 0; /* HAVE_CYGWIN_SHELL */
+        int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
 
 #ifdef HAVE_CYGWIN_SHELL
-        have_sh = (shell_name != NULL || strstr(full_exec_path, "sh.exe"));
         cygwin_mode = 1;
 #endif
 
         if (shell_name && full_exec_path) {
+                have_sh = cygwin_mode && strstr(full_exec_path, "sh.exe");
                 bytes_required
                   = strlen(shell_name) + 1 + strlen(full_exec_path);
                 /*