X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_request_object.c;h=4377dcc1e37f0888064b9d62a79a90f3b2185bac;hb=650dad8564d53bd3fb6c9867fa81e0abf17f6f7b;hp=047e2a34c13cda697627693b43636e017bd37bbc;hpb=669d2e6a8bdc642b6b52693f4593f199ddd7e8d2;p=m6w6%2Fext-http diff --git a/http_request_object.c b/http_request_object.c index 047e2a3..4377dcc 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -409,7 +409,7 @@ zend_object_value _http_request_object_new_ex(zend_class_entry *ce, CURL *ch, ht } 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_request_object, o); @@ -633,7 +633,7 @@ STATUS _http_request_object_responsehandler(http_request_object *obj, zval *this } UPD_PROP(long, responseCode, msg->http.info.response.code); - UPD_PROP(string, responseStatus, msg->http.info.response.status); + UPD_PROP(string, responseStatus, msg->http.info.response.status ? msg->http.info.response.status : ""); MAKE_STD_ZVAL(resp); array_init(resp); @@ -688,12 +688,14 @@ STATUS _http_request_object_responsehandler(http_request_object *obj, zval *this ret = FAILURE; } - if (zend_hash_exists(&Z_OBJCE_P(getThis())->function_table, "onfinish", sizeof("onfinish"))) { + if (!EG(exception) && zend_hash_exists(&Z_OBJCE_P(getThis())->function_table, "onfinish", sizeof("onfinish"))) { zval *param; MAKE_STD_ZVAL(param); ZVAL_BOOL(param, ret == SUCCESS); - zend_call_method_with_1_params(&getThis(), Z_OBJCE_P(getThis()), NULL, "onfinish", NULL, param); + with_error_handling(EH_NORMAL, NULL) { + zend_call_method_with_1_params(&getThis(), Z_OBJCE_P(getThis()), NULL, "onfinish", NULL, param); + } end_error_handling(); zval_ptr_dtor(¶m); }