X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_object.c;h=8ff7b25ed21fcb98874fa877f5f23d3572e80fd6;hp=5032247ec8f4d141ec07df88540b331838257db1;hb=7b88d9022c90eb12e5fe195af8644935141c9d68;hpb=767eb5781e4d072f496b5f1009024602f9bd5651 diff --git a/http_request_object.c b/http_request_object.c index 5032247..8ff7b25 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -32,8 +32,6 @@ #include "php_http_request_pool_api.h" #include "php_http_url_api.h" -ZEND_EXTERN_MODULE_GLOBALS(http); - #define HTTP_BEGIN_ARGS(method, ret_ref, req_args) HTTP_BEGIN_ARGS_EX(HttpRequest, method, ret_ref, req_args) #define HTTP_EMPTY_ARGS(method, ret_ref) HTTP_EMPTY_ARGS_EX(HttpRequest, method, ret_ref) #define HTTP_REQUEST_ME(method, visibility) PHP_ME(HttpRequest, method, HTTP_ARGS(HttpRequest, method), visibility) @@ -1196,7 +1194,7 @@ PHP_METHOD(HttpRequest, setPostFields) MAKE_STD_ZVAL(post); array_init(post); - if (post_data && (Z_TYPE_P(post_data) == IS_ARRAY)) { + if (post_data && zend_hash_num_elements(Z_ARRVAL_P(post_data))) { array_copy(post_data, post); } SET_PROP(obj, postFields, post); @@ -1276,14 +1274,18 @@ PHP_METHOD(HttpRequest, addRawPostData) } if (data_len) { - zval *zdata = GET_PROP(obj, rawPostData); + zval *data, *zdata = GET_PROP(obj, rawPostData); - SEPARATE_ZVAL(&zdata); - convert_to_string(zdata); - Z_STRVAL_P(zdata) = erealloc(Z_STRVAL_P(zdata), (Z_STRLEN_P(zdata) += data_len) + 1); - Z_STRVAL_P(zdata)[Z_STRLEN_P(zdata)] = '\0'; - memcpy(Z_STRVAL_P(zdata) + Z_STRLEN_P(zdata) - data_len, raw_data, data_len); - SET_PROP(obj, rawPostData, zdata); + ALLOC_ZVAL(data); + *data = *zdata; + zval_copy_ctor(data); + INIT_PZVAL(data); + convert_to_string(data); + Z_STRVAL_P(data) = erealloc(Z_STRVAL_P(data), (Z_STRLEN_P(data) += data_len) + 1); + Z_STRVAL_P(data)[Z_STRLEN_P(data)] = '\0'; + memcpy(Z_STRVAL_P(data) + Z_STRLEN_P(data) - data_len, raw_data, data_len); + SET_PROP(obj, rawPostData, data); + zval_ptr_dtor(&data); } RETURN_TRUE; @@ -1355,6 +1357,7 @@ PHP_METHOD(HttpRequest, addPostFile) } add_next_index_zval(new_post, entry); SET_PROP(obj, postFiles, new_post); + zval_ptr_dtor(&new_post); RETURN_TRUE; }