X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_params.c;h=92c144154c8866d4af009ded0ef893eea51ed240;hp=9b40cfefdc767dafc1945213db20fdd45c17001a;hb=d5d03014cff8c8ca80ee7866af100d3ceae1bd8f;hpb=aff646843d13892c5aa3ada2de08e0ab1f2f6ad8 diff --git a/src/php_http_params.c b/src/php_http_params.c index 9b40cfe..92c1441 100644 --- a/src/php_http_params.c +++ b/src/php_http_params.c @@ -67,7 +67,11 @@ static inline zend_string *quote_string(zend_string *zs, zend_bool force) { size_t len = (zs)->len; +#if PHP_VERSION_ID < 70300 zs = php_addcslashes(zs, 0, ZEND_STRL("\0..\37\173\\\"")); +#else + zs = php_addcslashes(zs, ZEND_STRL("\0..\37\173\\\"")); +#endif if (force || len != (zs)->len || strpbrk((zs)->val, "()<>@,;:\"[]?={} ")) { int len = (zs)->len + 2; @@ -136,12 +140,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 +203,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 +238,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); } @@ -1287,7 +1290,7 @@ PHP_METHOD(HttpParams, offsetSet) } static zend_function_entry php_http_params_methods[] = { - PHP_ME(HttpParams, __construct, ai_HttpParams___construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR|ZEND_ACC_FINAL) + PHP_ME(HttpParams, __construct, ai_HttpParams___construct, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(HttpParams, toArray, ai_HttpParams_toArray, ZEND_ACC_PUBLIC) PHP_ME(HttpParams, toString, ai_HttpParams_toString, ZEND_ACC_PUBLIC)