X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_encoding.c;h=ffa10b379a2467f0222141cc6d2b38694df6efd4;hp=a6e9337cdbe8827db2e7bc67311af193cf3d0a83;hb=2e55401943bf7835544aa37e2aeaedfac545a6bb;hpb=03f11ce599fa5a89148d588caf6ccec7f939e9d4 diff --git a/php_http_encoding.c b/php_http_encoding.c index a6e9337..ffa10b3 100644 --- a/php_http_encoding.c +++ b/php_http_encoding.c @@ -909,7 +909,7 @@ php_http_encoding_stream_object_t *php_http_encoding_stream_object_new_ex(zend_c { php_http_encoding_stream_object_t *o; - o = ecalloc(1, sizeof(*o) + (ce->default_properties_count - 1) * sizeof(zval)); + o = ecalloc(1, sizeof(*o) + zend_object_properties_size(ce)); zend_object_std_init(&o->zo, ce); object_properties_init(&o->zo, ce); @@ -1146,6 +1146,7 @@ static PHP_METHOD(HttpDechunkStream, decode) if ((end_ptr = php_http_encoding_dechunk(str, len, &enc_str, &enc_len))) { if (zlen) { + ZVAL_DEREF(zlen); zval_dtor(zlen); ZVAL_LONG(zlen, str + len - end_ptr); } @@ -1178,8 +1179,9 @@ PHP_MINIT_FUNCTION(http_encoding) php_http_encoding_stream_class_entry->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; php_http_encoding_stream_class_entry->create_object = php_http_encoding_stream_object_new; memcpy(&php_http_encoding_stream_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + php_http_encoding_stream_object_handlers.offset = XtOffsetOf(php_http_encoding_stream_object_t, zo); php_http_encoding_stream_object_handlers.clone_obj = php_http_encoding_stream_object_clone; - php_http_encoding_stream_object_handlers.dtor_obj = php_http_encoding_stream_object_free; + php_http_encoding_stream_object_handlers.free_obj = php_http_encoding_stream_object_free; zend_declare_class_constant_long(php_http_encoding_stream_class_entry, ZEND_STRL("FLUSH_NONE"), PHP_HTTP_ENCODING_STREAM_FLUSH_NONE); zend_declare_class_constant_long(php_http_encoding_stream_class_entry, ZEND_STRL("FLUSH_SYNC"), PHP_HTTP_ENCODING_STREAM_FLUSH_SYNC); @@ -1188,6 +1190,7 @@ PHP_MINIT_FUNCTION(http_encoding) memset(&ce, 0, sizeof(ce)); INIT_NS_CLASS_ENTRY(ce, "http\\Encoding\\Stream", "Deflate", php_http_deflate_stream_methods); php_http_deflate_stream_class_entry = zend_register_internal_class_ex(&ce, php_http_encoding_stream_class_entry); + php_http_deflate_stream_class_entry->create_object = php_http_encoding_stream_object_new; zend_declare_class_constant_long(php_http_deflate_stream_class_entry, ZEND_STRL("TYPE_GZIP"), PHP_HTTP_DEFLATE_TYPE_GZIP); zend_declare_class_constant_long(php_http_deflate_stream_class_entry, ZEND_STRL("TYPE_ZLIB"), PHP_HTTP_DEFLATE_TYPE_ZLIB); @@ -1204,10 +1207,12 @@ PHP_MINIT_FUNCTION(http_encoding) memset(&ce, 0, sizeof(ce)); INIT_NS_CLASS_ENTRY(ce, "http\\Encoding\\Stream", "Inflate", php_http_inflate_stream_methods); php_http_inflate_stream_class_entry = zend_register_internal_class_ex(&ce, php_http_encoding_stream_class_entry); + php_http_inflate_stream_class_entry->create_object = php_http_encoding_stream_object_new; memset(&ce, 0, sizeof(ce)); INIT_NS_CLASS_ENTRY(ce, "http\\Encoding\\Stream", "Dechunk", php_http_dechunk_stream_methods); php_http_dechunk_stream_class_entry = zend_register_internal_class_ex(&ce, php_http_encoding_stream_class_entry); + php_http_dechunk_stream_class_entry->create_object = php_http_encoding_stream_object_new; return SUCCESS; }