X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_params.c;h=6e5dd4a0df442602ca6cd52e882d2a9231fc7086;hp=74ddf1f8955c2592e2e0f043929aefdd49af190a;hb=95c6c900d04096d332c422e3f597186b7184c5ab;hpb=8d084b7e31a4985d75e74efbabf21a818513fd0f diff --git a/php_http_params.c b/php_http_params.c index 74ddf1f..6e5dd4a 100644 --- a/php_http_params.c +++ b/php_http_params.c @@ -176,7 +176,7 @@ static void prepare_dimension(php_http_buffer_t *buf, php_http_buffer_t *keybuf, php_http_buffer_init(&prefix); php_http_buffer_append(&prefix, keybuf->data, keybuf->used); - ZEND_HASH_FOREACH_KEY_VAL(ht, key.h, key.key, val) + ZEND_HASH_FOREACH_KEY_VAL_IND(ht, key.h, key.key, val) { if (key.key && !*key.key->val) { /* only public properties */ @@ -724,6 +724,9 @@ static inline void shift_rfc5987(php_http_buffer_t *buf, zval *zvalue, const cha (int) (key.key->len > INT_MAX ? INT_MAX : key.key->len), key.key->val); php_http_arrkey_dtor(&key); + if (Z_TYPE_P(zdata) == IS_INDIRECT) { + zdata = Z_INDIRECT_P(zdata); + } zs = zval_get_string(zdata); ZVAL_STR(&tmp, zs); prepare_value(flags | PHP_HTTP_PARAMS_URLENCODED, &tmp); @@ -770,7 +773,7 @@ static void shift_arg(php_http_buffer_t *buf, char *key_str, size_t key_len, zva if (!rfc5987) { shift_key(buf, key_str, key_len, ass, asl, flags); } - ZEND_HASH_FOREACH_KEY_VAL(ht, key.h, key.key, val) + ZEND_HASH_FOREACH_KEY_VAL_IND(ht, key.h, key.key, val) { /* did you mean recursion? */ php_http_arrkey_stringify(&key, NULL);