summaryrefslogtreecommitdiff
path: root/ext/json
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2017-07-16 15:47:23 +0100
committerJakub Zelenka <bukka@php.net>2017-07-16 15:47:23 +0100
commit9c5882265333a40dcd2fc2c2f7542f3f6df3cf65 (patch)
tree75206db9a75d625a28caed3a7d16d240c88dc105 /ext/json
parent0d0f7cde8c321ae841ba0f60f4377b72f98db637 (diff)
downloadphp-git-9c5882265333a40dcd2fc2c2f7542f3f6df3cf65.tar.gz
Introduce internal php_json_encode_ex to allow extensions setting depth
Diffstat (limited to 'ext/json')
-rw-r--r--ext/json/json.c12
-rw-r--r--ext/json/php_json.h2
2 files changed, 9 insertions, 5 deletions
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 */
/*