X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_message_body.c;h=45fe95e9ef9d9e44e8a158a0f1b03564e2a2c7d3;hb=6f61c56b9d16c4fd68e388e629cc5a9248fe8281;hp=40a168876873d03cd312715b0d8c93e7a4b9755c;hpb=3d6119e310337b4453b30312ea65613208493cd3;p=m6w6%2Fext-http diff --git a/php_http_message_body.c b/php_http_message_body.c index 40a1688..45fe95e 100644 --- a/php_http_message_body.c +++ b/php_http_message_body.c @@ -286,6 +286,7 @@ PHP_HTTP_API STATUS php_http_message_body_add_form_file(php_http_message_body_t efree(safe_name); efree(path_dup); + efree(bname); return SUCCESS; } @@ -617,11 +618,7 @@ zend_object_value php_http_message_body_object_new_ex(zend_class_entry *ce, php_ o = ecalloc(1, sizeof(php_http_message_body_object_t)); zend_object_std_init((zend_object *) o, php_http_message_body_class_entry TSRMLS_CC); -#if PHP_VERSION_ID < 50339 - zend_hash_copy(((zend_object *) o)->properties, &(ce->default_properties), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*)); -#else object_properties_init((zend_object *) o, ce); -#endif if (ptr) { *ptr = o; @@ -653,8 +650,9 @@ void php_http_message_body_object_free(void *object TSRMLS_DC) { php_http_message_body_object_t *obj = object; - php_http_message_body_free(&obj->body); - + if (!obj->shared) { + php_http_message_body_free(&obj->body); + } zend_object_std_dtor((zend_object *) obj TSRMLS_CC); efree(obj); } @@ -671,7 +669,7 @@ PHP_METHOD(HttpMessageBody, __construct) php_stream_from_zval(stream, &zstream); if (stream) { - if (obj->body) { + if (obj->body && !obj->shared) { php_http_message_body_dtor(obj->body); } obj->body = php_http_message_body_init(obj->body, stream TSRMLS_CC); @@ -755,6 +753,7 @@ PHP_METHOD(HttpMessageBody, getResource) if (SUCCESS == zend_parse_parameters_none()) { php_http_message_body_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC); + zend_list_addref(obj->body->stream_id); RETVAL_RESOURCE(obj->body->stream_id); } }