summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2014-11-30 22:22:15 -0800
committerStanislav Malyshev <stas@php.net>2014-11-30 22:22:15 -0800
commit8b2a8c46b0653ff239a345d63efa8fc62dbbc649 (patch)
treebb91836efe55c253b11bc41c403d3c0da8c85c14
parentbfc8d297be96b10f82190e58d8de67e101c33573 (diff)
parent00c6033f99f9e4303e273bb5393efbadbb7c43a9 (diff)
downloadphp-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.c7
-rw-r--r--ext/curl/tests/bug67643.phpt30
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