X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_params.c;h=b22769ef7531af5ac4dea2fc591deb618e0da77c;hp=9b40cfefdc767dafc1945213db20fdd45c17001a;hb=64eadf160ace89847f7be3b867fd4220e19ee516;hpb=cfc3b88a84587eb61b8275a69e9d07431d3275a9 diff --git a/src/php_http_params.c b/src/php_http_params.c index 9b40cfe..b22769e 100644 --- a/src/php_http_params.c +++ b/src/php_http_params.c @@ -136,12 +136,11 @@ static inline void prepare_urlencoded(zval *zv) static void sanitize_dimension(zval *zv) { - zval arr, tmp, *cur = NULL; + zval arr, tmp, *cur = &arr; char *var = NULL, *ptr = Z_STRVAL_P(zv), *end = Z_STRVAL_P(zv) + Z_STRLEN_P(zv); long level = 0; array_init(&arr); - cur = &arr; while (ptr < end) { if (!var) { @@ -200,8 +199,8 @@ static void prepare_dimension(php_http_buffer_t *buf, php_http_buffer_t *keybuf, zval *val; php_http_buffer_t prefix; - if (!ZEND_HASH_GET_APPLY_COUNT(ht)) { - ZEND_HASH_INC_APPLY_COUNT(ht); + if (!HT_IS_RECURSIVE(ht)) { + HT_PROTECT_RECURSION(ht); php_http_buffer_init(&prefix); php_http_buffer_append(&prefix, keybuf->data, keybuf->used); @@ -235,7 +234,7 @@ static void prepare_dimension(php_http_buffer_t *buf, php_http_buffer_t *keybuf, php_http_buffer_cut(&prefix, keybuf->used, prefix.used - keybuf->used); } ZEND_HASH_FOREACH_END(); - ZEND_HASH_DEC_APPLY_COUNT(ht); + HT_UNPROTECT_RECURSION(ht); php_http_buffer_dtor(&prefix); }