X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_message_body.c;fp=src%2Fphp_http_message_body.c;h=18ff936c8df5f1dddc4b235758630d07e5116bb3;hp=18859a3b409cb8fe1a4d30479892f62afa37fc55;hb=3f49890b5a7dc529507f65d03e5118a74fa008d9;hpb=cfc3b88a84587eb61b8275a69e9d07431d3275a9 diff --git a/src/php_http_message_body.c b/src/php_http_message_body.c index 18859a3..18ff936 100644 --- a/src/php_http_message_body.c +++ b/src/php_http_message_body.c @@ -90,9 +90,9 @@ void php_http_message_body_free(php_http_message_body_t **body_ptr) { if (*body_ptr) { php_http_message_body_t *body = *body_ptr; - if (!--body->refcount) { - zend_list_delete(body->res); + zend_list_close(body->res); + body->res = NULL; PTR_FREE(body->boundary); efree(body); } @@ -570,8 +570,6 @@ php_http_message_body_object_t *php_http_message_body_object_new_ex(zend_class_e if (body) { o->body = body; - php_stream_to_zval(php_http_message_body_stream(o->body), o->gc); - } o->zo.handlers = &php_http_message_body_object_handlers; @@ -597,12 +595,18 @@ static HashTable *php_http_message_body_object_get_gc(zval *object, zval **table HashTable *props = Z_OBJPROP_P(object); uint32_t count = zend_hash_num_elements(props); - *n = 1; + obj->gc = erealloc(obj->gc, (1 + count) * sizeof(zval)); + + if (php_http_message_body_stream(obj->body)) { + *n = 1; + php_stream_to_zval(php_http_message_body_stream(obj->body), obj->gc); + } else { + *n = 0; + } + if (count) { zval *val; - obj->gc = erealloc(obj->gc, (*n + count) * sizeof(zval)); - ZEND_HASH_FOREACH_VAL(props, val) { ZVAL_COPY_VALUE(&obj->gc[(*n)++], val);