X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_message_body.c;h=1c540c77389dba84e58b1040128ae040579cfec8;hb=8eee486472a8905b8964b08db05b22982fc63914;hp=b5f03c24604d424da006f1af326828edd81b11ac;hpb=03f11ce599fa5a89148d588caf6ccec7f939e9d4;p=m6w6%2Fext-http diff --git a/php_http_message_body.c b/php_http_message_body.c index b5f03c2..1c540c7 100644 --- a/php_http_message_body.c +++ b/php_http_message_body.c @@ -45,14 +45,13 @@ php_http_message_body_t *php_http_message_body_init(php_http_message_body_t **bo body->refcount = 1; if (stream) { - php_stream_auto_cleanup(stream); body->res = stream->res; ++GC_REFCOUNT(body->res); } else { stream = php_stream_temp_create(TEMP_STREAM_DEFAULT, 0xffff); - php_stream_auto_cleanup(stream); body->res = stream->res; } + php_stream_auto_cleanup(stream); if (body_ptr) { *body_ptr = body; @@ -261,9 +260,9 @@ void php_http_message_body_add_part(php_http_message_body_t *body, php_http_mess ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len) { - zend_string *safe_name; + zend_string *safe_name = zend_string_init(name, strlen(name), 0); - safe_name = php_addslashes(estrdup(name), strlen(name), 1); + safe_name = php_addslashes(safe_name, 1); BOUNDARY_OPEN(body); php_http_message_body_appendf( @@ -283,9 +282,9 @@ ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *bo { size_t path_len = strlen(path); char *path_dup = estrndup(path, path_len); - zend_string *safe_name, *base_name; + zend_string *base_name, *safe_name = zend_string_init(name, strlen(name), 0); - safe_name = php_addslashes(estrdup(name), strlen(name), 1); + safe_name = php_addslashes(safe_name, 1); base_name = php_basename(path_dup, path_len, NULL, 0); BOUNDARY_OPEN(body); @@ -340,7 +339,7 @@ static ZEND_RESULT_CODE add_recursive_fields(php_http_message_body_t *body, cons if (!ZEND_HASH_GET_APPLY_COUNT(fields)) { ZEND_HASH_INC_APPLY_COUNT(fields); - ZEND_HASH_FOREACH_KEY_VAL(fields, key.h, key.key, val) + ZEND_HASH_FOREACH_KEY_VAL_IND(fields, key.h, key.key, val) { char *str = format_key(&key, name); @@ -378,7 +377,7 @@ static ZEND_RESULT_CODE add_recursive_files(php_http_message_body_t *body, const if (!ZEND_HASH_GET_APPLY_COUNT(files)) { ZEND_HASH_INC_APPLY_COUNT(files); - ZEND_HASH_FOREACH_KEY_VAL(files, key.h, key.key, val) + ZEND_HASH_FOREACH_KEY_VAL_IND(files, key.h, key.key, val) { if (Z_TYPE_P(val) == IS_ARRAY || Z_TYPE_P(val) == IS_OBJECT) { char *str = format_key(&key, name); @@ -555,7 +554,7 @@ php_http_message_body_object_t *php_http_message_body_object_new_ex(zend_class_e { php_http_message_body_object_t *o; - o = ecalloc(1, sizeof(php_http_message_body_object_t) + (ce->default_properties_count - 1) * sizeof(zval)); + o = ecalloc(1, sizeof(*o) + zend_object_properties_size(ce)); zend_object_std_init(&o->zo, php_http_message_body_class_entry); object_properties_init(&o->zo, ce); @@ -882,8 +881,9 @@ PHP_MINIT_FUNCTION(http_message_body) php_http_message_body_class_entry = zend_register_internal_class(&ce); php_http_message_body_class_entry->create_object = php_http_message_body_object_new; memcpy(&php_http_message_body_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + php_http_message_body_object_handlers.offset = XtOffsetOf(php_http_message_body_object_t, zo); php_http_message_body_object_handlers.clone_obj = php_http_message_body_object_clone; - php_http_message_body_object_handlers.dtor_obj = php_http_message_body_object_free; + php_http_message_body_object_handlers.free_obj = php_http_message_body_object_free; zend_class_implements(php_http_message_body_class_entry, 1, zend_ce_serializable); return SUCCESS;