summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-06-22 15:09:22 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-06-22 15:09:22 +0200
commit26171c3690874743e1c71766e60248fbd974782f (patch)
tree722cb1d74fd1bcfa69175384f77ff402213fe6ac
parentea2b0d3c8b292ba83b28cfd06eaa78d955c42be0 (diff)
downloadphp-git-26171c3690874743e1c71766e60248fbd974782f.tar.gz
Also allow casting CurlMultiHandles
-rw-r--r--ext/curl/interface.c3
-rw-r--r--ext/curl/multi.c1
-rw-r--r--ext/curl/php_curl.h1
-rw-r--r--ext/curl/tests/curl_int_cast.phpt5
4 files changed, 8 insertions, 2 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 6957e9e73a..af58d37ff5 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -241,7 +241,6 @@ static void curl_free_obj(zend_object *object);
static HashTable *curl_get_gc(zend_object *object, zval **table, int *n);
static zend_function *curl_get_constructor(zend_object *object);
static zend_object *curl_clone_obj(zend_object *object);
-static int curl_cast_object(zend_object *obj, zval *result, int type);
php_curl *init_curl_handle_into_zval(zval *curl);
static inline int build_mime_structure_from_hash(php_curl *ch, zval *zpostfields);
@@ -1305,7 +1304,7 @@ static HashTable *curl_get_gc(zend_object *object, zval **table, int *n)
return zend_std_get_properties(object);
}
-static int curl_cast_object(zend_object *obj, zval *result, int type)
+int curl_cast_object(zend_object *obj, zval *result, int type)
{
if (type == IS_LONG) {
/* For better backward compatibility, make (int) $curl_handle return the object ID,
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index 6a4c48ee18..7f2f98ad29 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -608,6 +608,7 @@ void curl_multi_register_class(const zend_function_entry *method_entries) {
curl_multi_handlers.get_gc = curl_multi_get_gc;
curl_multi_handlers.get_constructor = curl_multi_get_constructor;
curl_multi_handlers.clone_obj = NULL;
+ curl_multi_handlers.cast_object = curl_cast_object;
}
#endif
diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h
index a469d5e41c..5022f69d21 100644
--- a/ext/curl/php_curl.h
+++ b/ext/curl/php_curl.h
@@ -176,6 +176,7 @@ PHP_CURL_API extern zend_class_entry *curl_share_ce;
void curl_multi_register_class(const zend_function_entry *method_entries);
void curl_share_register_class(const zend_function_entry *method_entries);
void curlfile_register_class(void);
+int curl_cast_object(zend_object *obj, zval *result, int type);
PHP_CURL_API extern zend_class_entry *curl_CURLFile_class;
diff --git a/ext/curl/tests/curl_int_cast.phpt b/ext/curl/tests/curl_int_cast.phpt
index 3f31b24210..7a3a89db0b 100644
--- a/ext/curl/tests/curl_int_cast.phpt
+++ b/ext/curl/tests/curl_int_cast.phpt
@@ -13,8 +13,13 @@ unset($handle2);
$handle3 = curl_init();
var_dump((int) $handle3);
+// Also works for CurlMultiHandle.
+$handle4 = curl_multi_init();
+var_dump((int) $handle4);
+
?>
--EXPECT--
int(1)
int(2)
int(2)
+int(3)