X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_url_api.c;h=53faf9506f5417440570c2053df5e9c139011258;hp=c8e9e78ea8597f7b0d2170a747efc0201387bb86;hb=7b88d9022c90eb12e5fe195af8644935141c9d68;hpb=2945591b02528824cc52b0affb44cdd64743d820 diff --git a/http_url_api.c b/http_url_api.c index c8e9e78..53faf95 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -27,8 +27,6 @@ #include "php_http_api.h" #include "php_http_url_api.h" -ZEND_EXTERN_MODULE_GLOBALS(http); - PHP_HTTP_API char *_http_absolute_url(const char *url TSRMLS_DC) { char *abs = estrdup(url); @@ -299,9 +297,13 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c return FAILURE; } } else { - char *encoded_val; - int encoded_len; - zval *cpy, *val = convert_to_type_ex(IS_STRING, *data, &cpy); + zval *val; + + ALLOC_ZVAL(val); + *val = **data; + INIT_PZVAL(val); + zval_copy_ctor(val); + convert_to_string(val); if (PHPSTR_LEN(str)) { phpstr_append(str, arg_sep, arg_sep_len); @@ -309,15 +311,17 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c phpstr_append(str, PHPSTR_VAL(&new_prefix), PHPSTR_LEN(&new_prefix)); phpstr_appends(str, "="); - encoded_val = php_url_encode(Z_STRVAL_P(val), Z_STRLEN_P(val), &encoded_len); - phpstr_append(str, encoded_val, encoded_len); - efree(encoded_val); - - if (cpy) { - zval_ptr_dtor(&cpy); + if (Z_STRLEN_P(val) && Z_STRVAL_P(val)) { + char *encoded_val; + int encoded_len; + + encoded_val = php_url_encode(Z_STRVAL_P(val), Z_STRLEN_P(val), &encoded_len); + phpstr_append(str, encoded_val, encoded_len); + efree(encoded_val); } + + zval_ptr_dtor(&val); } - phpstr_dtor(&new_prefix); } return SUCCESS;