X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_message_body.c;h=1c540c77389dba84e58b1040128ae040579cfec8;hp=2b7e308adecb646085eea2ea8ede03cc6926345e;hb=1bef05c9e90799c57722bdb4865e6829373fee20;hpb=ff039e9267166e05d47b16ba4b5f0bf471860843 diff --git a/php_http_message_body.c b/php_http_message_body.c index 2b7e308..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);