@@ -1372,7 +1372,6 @@ PHP_FUNCTION(proc_open)
13721372
13731373 if (newprocok == FALSE) {
13741374 DWORD dw = GetLastError ();
1375- close_all_descriptors (descriptors , ndesc );
13761375 char * msg = php_win32_error_to_msg (dw );
13771376 php_error_docref (NULL , E_WARNING , "CreateProcess failed: %s" , msg );
13781377 php_win32_error_msg_free (msg );
@@ -1389,7 +1388,6 @@ PHP_FUNCTION(proc_open)
13891388
13901389 if (close_parentends_of_pipes (& factions , descriptors , ndesc ) == FAILURE ) {
13911390 posix_spawn_file_actions_destroy (& factions );
1392- close_all_descriptors (descriptors , ndesc );
13931391 goto exit_fail ;
13941392 }
13951393
@@ -1409,7 +1407,6 @@ PHP_FUNCTION(proc_open)
14091407 }
14101408 posix_spawn_file_actions_destroy (& factions );
14111409 if (r != 0 ) {
1412- close_all_descriptors (descriptors , ndesc );
14131410 php_error_docref (NULL , E_WARNING , "posix_spawn() failed: %s" , strerror (r ));
14141411 goto exit_fail ;
14151412 }
@@ -1451,7 +1448,6 @@ PHP_FUNCTION(proc_open)
14511448 _exit (127 );
14521449 } else if (child < 0 ) {
14531450 /* Failed to fork() */
1454- close_all_descriptors (descriptors , ndesc );
14551451 php_error_docref (NULL , E_WARNING , "Fork failed: %s" , strerror (errno ));
14561452 goto exit_fail ;
14571453 }
@@ -1541,6 +1537,9 @@ PHP_FUNCTION(proc_open)
15411537 } else {
15421538exit_fail :
15431539 _php_free_envp (env );
1540+ if (descriptors ) {
1541+ close_all_descriptors (descriptors , ndesc );
1542+ }
15441543 RETVAL_FALSE ;
15451544 }
15461545
0 commit comments