From: Jakub Zelenka Date: Sun, 16 Jul 2017 14:47:23 +0000 (+0100) Subject: Introduce internal php_json_encode_ex to allow extensions setting depth X-Git-Tag: php-7.2.0beta1~30 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9c5882265333a40dcd2fc2c2f7542f3f6df3cf65;p=php Introduce internal php_json_encode_ex to allow extensions setting depth --- diff --git a/ext/json/json.c b/ext/json/json.c index e645f7c52b..f9962756f5 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -188,14 +188,13 @@ static PHP_MINFO_FUNCTION(json) } /* }}} */ -PHP_JSON_API int php_json_encode(smart_str *buf, zval *val, int options) /* {{{ */ +PHP_JSON_API int php_json_encode_ex(smart_str *buf, zval *val, int options, zend_long depth) /* {{{ */ { php_json_encoder encoder; int return_code; php_json_encode_init(&encoder); - encoder.max_depth = JSON_G(encode_max_depth); - encoder.error_code = PHP_JSON_ERROR_NONE; + encoder.max_depth = depth; return_code = php_json_encode_zval(buf, val, options, &encoder); JSON_G(error_code) = encoder.error_code; @@ -204,6 +203,12 @@ PHP_JSON_API int php_json_encode(smart_str *buf, zval *val, int options) /* {{{ } /* }}} */ +PHP_JSON_API int php_json_encode(smart_str *buf, zval *val, int options) /* {{{ */ +{ + return php_json_encode_ex(buf, val, options, JSON_G(encode_max_depth)); +} +/* }}} */ + PHP_JSON_API int php_json_decode_ex(zval *return_value, char *str, size_t str_len, zend_long options, zend_long depth) /* {{{ */ { php_json_parser parser; @@ -239,7 +244,6 @@ static PHP_FUNCTION(json_encode) php_json_encode_init(&encoder); encoder.max_depth = (int)depth; - encoder.error_code = PHP_JSON_ERROR_NONE; php_json_encode_zval(&buf, parameter, (int)options, &encoder); JSON_G(error_code) = encoder.error_code; diff --git a/ext/json/php_json.h b/ext/json/php_json.h index e772d8d0c2..0a21dd24de 100644 --- a/ext/json/php_json.h +++ b/ext/json/php_json.h @@ -97,6 +97,7 @@ PHP_JSON_API ZEND_EXTERN_MODULE_GLOBALS(json) ZEND_TSRMLS_CACHE_EXTERN() #endif +PHP_JSON_API int php_json_encode_ex(smart_str *buf, zval *val, int options, zend_long depth); PHP_JSON_API int php_json_encode(smart_str *buf, zval *val, int options); PHP_JSON_API int php_json_decode_ex(zval *return_value, char *str, size_t str_len, zend_long options, zend_long depth); @@ -105,7 +106,6 @@ static inline int php_json_decode(zval *return_value, char *str, int str_len, ze return php_json_decode_ex(return_value, str, str_len, assoc ? PHP_JSON_OBJECT_AS_ARRAY : 0, depth); } - #endif /* PHP_JSON_H */ /*