@@ -570,6 +570,15 @@ static int set_proc_descriptor_to_pipe(struct php_proc_open_descriptor_item *des
570
570
return SUCCESS ;
571
571
}
572
572
573
+ static void close_all_descriptors (struct php_proc_open_descriptor_item * descriptors , int ndesc )
574
+ {
575
+ for (int i = 0 ; i < ndesc ; i ++ ) {
576
+ close_descriptor (descriptors [i ].childend );
577
+ if (descriptors [i ].parentend )
578
+ close_descriptor (descriptors [i ].parentend );
579
+ }
580
+ }
581
+
573
582
static void efree_argv (char * * argv )
574
583
{
575
584
if (argv ) {
@@ -998,14 +1007,7 @@ PHP_FUNCTION(proc_open)
998
1007
999
1008
if (FALSE == newprocok ) {
1000
1009
DWORD dw = GetLastError ();
1001
-
1002
- /* clean up all the descriptors */
1003
- for (i = 0 ; i < ndesc ; i ++ ) {
1004
- CloseHandle (descriptors [i ].childend );
1005
- if (descriptors [i ].parentend ) {
1006
- CloseHandle (descriptors [i ].parentend );
1007
- }
1008
- }
1010
+ close_all_descriptors (descriptors , ndesc );
1009
1011
php_error_docref (NULL , E_WARNING , "CreateProcess failed, error code - %u" , dw );
1010
1012
goto exit_fail ;
1011
1013
}
@@ -1076,16 +1078,8 @@ PHP_FUNCTION(proc_open)
1076
1078
1077
1079
} else if (child < 0 ) {
1078
1080
/* failed to fork() */
1079
-
1080
- /* clean up all the descriptors */
1081
- for (i = 0 ; i < ndesc ; i ++ ) {
1082
- close (descriptors [i ].childend );
1083
- if (descriptors [i ].parentend )
1084
- close (descriptors [i ].parentend );
1085
- }
1086
-
1081
+ close_all_descriptors (descriptors , ndesc );
1087
1082
php_error_docref (NULL , E_WARNING , "Fork failed - %s" , strerror (errno ));
1088
-
1089
1083
goto exit_fail ;
1090
1084
1091
1085
}
0 commit comments