diff options
author | Stanislav Malyshev <stas@php.net> | 2014-11-30 22:22:15 -0800 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2014-11-30 22:22:15 -0800 |
commit | 8b2a8c46b0653ff239a345d63efa8fc62dbbc649 (patch) | |
tree | bb91836efe55c253b11bc41c403d3c0da8c85c14 | |
parent | bfc8d297be96b10f82190e58d8de67e101c33573 (diff) | |
parent | 00c6033f99f9e4303e273bb5393efbadbb7c43a9 (diff) | |
download | php-git-8b2a8c46b0653ff239a345d63efa8fc62dbbc649.tar.gz |
Merge branch 'pull-request/728'
* pull-request/728:
Add a test for bug #67643 (curl_multi_getcontent returns '' when RETURNTRANSFER isn't set)
Fixed bug #67643 (curl_multi_getcontent returns '' when CURLOPT_RETURNTRANSFER isn't set)
Conflicts:
ext/curl/multi.c
-rw-r--r-- | ext/curl/multi.c | 7 | ||||
-rw-r--r-- | ext/curl/tests/bug67643.phpt | 30 |
2 files changed, 35 insertions, 2 deletions
diff --git a/ext/curl/multi.c b/ext/curl/multi.c index d9e6df2c98..d9ace4119c 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -240,12 +240,15 @@ PHP_FUNCTION(curl_multi_getcontent) ZEND_FETCH_RESOURCE(ch, php_curl *, z_ch, -1, le_curl_name, le_curl); - if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.s) { + if (ch->handlers->write->method == PHP_CURL_RETURN) { + if (!ch->handlers->write->buf.s) { + RETURN_EMPTY_STRING(); + } smart_str_0(&ch->handlers->write->buf); RETURN_STR(zend_string_copy(ch->handlers->write->buf.s)); } - RETURN_EMPTY_STRING(); + RETURN_NULL(); } /* }}} */ diff --git a/ext/curl/tests/bug67643.phpt b/ext/curl/tests/bug67643.phpt new file mode 100644 index 0000000000..ad59f2c12c --- /dev/null +++ b/ext/curl/tests/bug67643.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #67643 (curl_multi_getcontent returns '' when RETURNTRANSFER isn't set) +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, 'file://'. dirname(__FILE__) . DIRECTORY_SEPARATOR .'curl_testdata1.txt'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); + + $mh = curl_multi_init(); + curl_multi_add_handle($mh, $ch); + + $running = 0; + do { + curl_multi_exec($mh, $running); + } while($running > 0); + + $results = curl_multi_getcontent($ch); + + curl_multi_remove_handle($mh, $ch); + curl_multi_close($mh); + + var_dump($results); +?> +--EXPECT-- +CURL1 +NULL |