Commit: f85e5950ab4552799c119cd1d23617535ed19e61 Author: Pierrick Charron <pierr...@php.net> Sat, 5 Jan 2013 11:07:59 -0500 Parents: c4f2a20f150c6e2b453cdd16f5ca1715ab150f7a Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f85e5950ab4552799c119cd1d23617535ed19e61 Log: Improve resource management for curl handle Previous implementation was using its own refcounting (uses field of the php_curl struct). zend_list_add/remove already implements its own refcount, so we don't need to use an other one. Changed paths: M ext/curl/interface.c M ext/curl/multi.c M ext/curl/php_curl.h Diff: diff --git a/ext/curl/interface.c b/ext/curl/interface.c index e0c95ef..2e05581 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1952,8 +1952,6 @@ PHP_FUNCTION(curl_init) ch->handlers->read->method = PHP_CURL_DIRECT; ch->handlers->write_header->method = PHP_CURL_IGNORE; - ch->uses = 0; - MAKE_STD_ZVAL(clone); ch->clone = clone; @@ -1995,8 +1993,7 @@ PHP_FUNCTION(curl_copy_handle) TSRMLS_SET_CTX(dupch->thread_ctx); dupch->cp = cp; - dupch->uses = 0; - ch->uses++; + zend_list_addref(Z_LVAL_P(zid)); if (ch->handlers->write->stream) { Z_ADDREF_P(ch->handlers->write->stream); } @@ -3210,11 +3207,7 @@ PHP_FUNCTION(curl_close) return; } - if (ch->uses) { - ch->uses--; - } else { - zend_list_delete(Z_LVAL_P(zid)); - } + zend_list_delete(Z_LVAL_P(zid)); } /* }}} */ diff --git a/ext/curl/multi.c b/ext/curl/multi.c index d84669a..af78651 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -86,7 +86,6 @@ PHP_FUNCTION(curl_multi_add_handle) ZEND_FETCH_RESOURCE(ch, php_curl *, &z_ch, -1, le_curl_name, le_curl); _php_curl_cleanup_handle(ch); - ch->uses++; /* we want to create a copy of this zval that we store in the multihandle structure element "easyh" */ tmp_val = *z_ch; @@ -113,11 +112,7 @@ void _php_curl_multi_cleanup_list(void *data) /* {{{ */ return; } - if (ch->uses) { - ch->uses--; - } else { - zend_list_delete(Z_LVAL_P(z_ch)); - } + zend_list_delete(Z_LVAL_P(z_ch)); } /* }}} */ @@ -146,12 +141,12 @@ PHP_FUNCTION(curl_multi_remove_handle) ZEND_FETCH_RESOURCE(mh, php_curlm *, &z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle); ZEND_FETCH_RESOURCE(ch, php_curl *, &z_ch, -1, le_curl_name, le_curl); - --ch->uses; + + RETVAL_LONG((long) curl_multi_remove_handle(mh->multi, ch->cp)); zend_llist_del_element( &mh->easyh, &z_ch, (int (*)(void *, void *)) curl_compare_resources ); - - RETURN_LONG((long) curl_multi_remove_handle(mh->multi, ch->cp)); + } /* }}} */ diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h index 5c24fc1..a8c26c0 100644 --- a/ext/curl/php_curl.h +++ b/ext/curl/php_curl.h @@ -169,7 +169,6 @@ typedef struct { CURL *cp; php_curl_handlers *handlers; long id; - unsigned int uses; zend_bool in_callback; zval *clone; } php_curl; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php