X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_requestpool_object.c;h=69c3f9616a0ade832514f9e38e153d90d61c2655;hb=6aca56d611a22eb559098f3c02c31634a6f9ff9f;hp=c49edc559f7c35ce4dee6073f52cf963d8dc9204;hpb=efd602160cd419f39504f5f58df0d2890a607206;p=m6w6%2Fext-http diff --git a/http_requestpool_object.c b/http_requestpool_object.c index c49edc5..69c3f96 100644 --- a/http_requestpool_object.c +++ b/http_requestpool_object.c @@ -121,7 +121,7 @@ zend_object_value _http_requestpool_object_new(zend_class_entry *ce TSRMLS_DC) http_request_pool_init(&o->pool); ALLOC_HASHTABLE(OBJ_PROP(o)); - zend_hash_init(OBJ_PROP(o), 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(OBJ_PROP(o), zend_hash_num_elements(&ce->default_properties), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(OBJ_PROP(o), &ce->default_properties, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); ov.handle = putObject(http_requestpool_object, o); @@ -134,12 +134,8 @@ void _http_requestpool_object_free(zend_object *object TSRMLS_DC) { http_requestpool_object *o = (http_requestpool_object *) object; - if (OBJ_PROP(o)) { - zend_hash_destroy(OBJ_PROP(o)); - FREE_HASHTABLE(OBJ_PROP(o)); - } http_request_pool_dtor(&o->pool); - efree(o); + freeObject(o); } #define http_requestpool_object_llist2array _http_requestpool_object_llist2array @@ -198,15 +194,13 @@ PHP_METHOD(HttpRequestPool, __construct) for (i = 0; i < argc; ++i) { if (Z_TYPE_PP(argv[i]) == IS_OBJECT && instanceof_function(Z_OBJCE_PP(argv[i]), http_request_object_ce TSRMLS_CC)) { - http_request_pool_try { - http_request_pool_attach(&obj->pool, *(argv[i])); - } http_request_pool_catch(); + http_request_pool_attach(&obj->pool, *(argv[i])); } } - http_request_pool_final(); } efree(argv); SET_EH_NORMAL(); + http_final(HTTP_EX_CE(request_pool)); } /* }}} */ @@ -315,6 +309,9 @@ PHP_METHOD(HttpRequestPool, send) SET_EH_THROW_HTTP(); status = http_request_pool_send(&obj->pool); SET_EH_NORMAL(); + + /* rethrow as HttpRequestPoolException */ + http_final(HTTP_EX_CE(request_pool)); RETURN_SUCCESS(status); } @@ -391,7 +388,7 @@ PHP_METHOD(HttpRequestPool, valid) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_requestpool_object, obj); RETURN_BOOL(obj->iterator.pos >= 0 && obj->iterator.pos < zend_llist_count(&obj->pool.handles)); } @@ -406,7 +403,7 @@ PHP_METHOD(HttpRequestPool, current) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { long pos = 0; zval **current = NULL; zend_llist_position lpos; @@ -433,7 +430,7 @@ PHP_METHOD(HttpRequestPool, key) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_requestpool_object, obj); RETURN_LONG(obj->iterator.pos); }