summaryrefslogtreecommitdiff
path: root/ext/curl/interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/interface.c')
-rw-r--r--ext/curl/interface.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 8ff3e0f374..f01f6f775a 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -2832,6 +2832,12 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue, bool i
if (Z_TYPE_P(zvalue) == IS_OBJECT && Z_OBJCE_P(zvalue) == curl_share_ce) {
php_curlsh *sh = Z_CURL_SHARE_P(zvalue);
curl_easy_setopt(ch->cp, CURLOPT_SHARE, sh->share);
+
+ if (ch->share) {
+ OBJ_RELEASE(&ch->share->std);
+ }
+ GC_ADDREF(&sh->std);
+ ch->share = sh;
}
}
break;
@@ -3373,6 +3379,10 @@ static void curl_free_obj(zend_object *object)
efree(ch->handlers);
zval_ptr_dtor(&ch->postfields);
+ if (ch->share) {
+ OBJ_RELEASE(&ch->share->std);
+ }
+
zend_object_std_dtor(&ch->std);
}
/* }}} */