From 26171c3690874743e1c71766e60248fbd974782f Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 22 Jun 2020 15:09:22 +0200 Subject: Also allow casting CurlMultiHandles --- ext/curl/interface.c | 3 +-- ext/curl/multi.c | 1 + ext/curl/php_curl.h | 1 + ext/curl/tests/curl_int_cast.phpt | 5 +++++ 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) -- cgit v1.2.1