@@ -1377,7 +1377,6 @@ PHP_FUNCTION(proc_open)
13771377
13781378 if (newprocok == FALSE) {
13791379 DWORD dw = GetLastError ();
1380- close_all_descriptors (descriptors , ndesc );
13811380 char * msg = php_win32_error_to_msg (dw );
13821381 php_error_docref (NULL , E_WARNING , "CreateProcess failed: %s" , msg );
13831382 php_win32_error_msg_free (msg );
@@ -1394,7 +1393,6 @@ PHP_FUNCTION(proc_open)
13941393
13951394 if (close_parentends_of_pipes (& factions , descriptors , ndesc ) == FAILURE ) {
13961395 posix_spawn_file_actions_destroy (& factions );
1397- close_all_descriptors (descriptors , ndesc );
13981396 goto exit_fail ;
13991397 }
14001398
@@ -1414,7 +1412,6 @@ PHP_FUNCTION(proc_open)
14141412 }
14151413 posix_spawn_file_actions_destroy (& factions );
14161414 if (r != 0 ) {
1417- close_all_descriptors (descriptors , ndesc );
14181415 php_error_docref (NULL , E_WARNING , "posix_spawn() failed: %s" , strerror (r ));
14191416 goto exit_fail ;
14201417 }
@@ -1456,7 +1453,6 @@ PHP_FUNCTION(proc_open)
14561453 _exit (127 );
14571454 } else if (child < 0 ) {
14581455 /* Failed to fork() */
1459- close_all_descriptors (descriptors , ndesc );
14601456 php_error_docref (NULL , E_WARNING , "Fork failed: %s" , strerror (errno ));
14611457 goto exit_fail ;
14621458 }
@@ -1546,6 +1542,9 @@ PHP_FUNCTION(proc_open)
15461542 } else {
15471543exit_fail :
15481544 _php_free_envp (env );
1545+ if (descriptors ) {
1546+ close_all_descriptors (descriptors , ndesc );
1547+ }
15491548 RETVAL_FALSE ;
15501549 }
15511550
0 commit comments