diff options
author | Anatol Belski <ab@php.net> | 2015-06-30 17:21:21 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-07-02 14:22:57 +0200 |
commit | d516a14fb93705ec03b39e611899a95bc0d591fe (patch) | |
tree | c1377d9607a397c2bca35818ee9f4f9692c24308 | |
parent | 1a5a4d546ede8fcdf7a9cc4462858bfedf3644d9 (diff) | |
download | php-git-d516a14fb93705ec03b39e611899a95bc0d591fe.tar.gz |
properly set the pipe blocking option
-rw-r--r-- | ext/standard/php_fopen_wrapper.c | 14 | ||||
-rw-r--r-- | ext/standard/proc_open.c | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index c3bd4b0048..89e4a81c35 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -400,17 +400,19 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa if (stream == NULL) { close(fd); } + } + #ifdef PHP_WIN32 { - zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking"); - if (blocking_pipes) { - convert_to_long(blocking_pipes); - php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL); + if (stream && context) { + zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking"); + if (blocking_pipes) { + convert_to_long(blocking_pipes); + php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL); + } } } #endif - } - return stream; } /* }}} */ diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index cee4728a54..447cbbcc6e 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -546,7 +546,6 @@ PHP_FUNCTION(proc_open) } #ifdef PHP_WIN32 - php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, blocking_pipes, NULL); descriptors[ndesc].childend = dup_fd_as_handle((int)fd); if (descriptors[ndesc].childend == NULL) { php_error_docref(NULL, E_WARNING, "unable to dup File-Handle for descriptor %d", nindex); @@ -941,6 +940,7 @@ PHP_FUNCTION(proc_open) #ifdef PHP_WIN32 stream = php_stream_fopen_from_fd(_open_osfhandle((zend_intptr_t)descriptors[i].parentend, descriptors[i].mode_flags), mode_string, NULL); + php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, blocking_pipes, NULL); #else stream = php_stream_fopen_from_fd(descriptors[i].parentend, mode_string, NULL); # if defined(F_SETFD) && defined(FD_CLOEXEC) |