Skip to content

Commit

Permalink
Introduce internal php_json_encode_ex to allow extensions setting depth
Browse files Browse the repository at this point in the history
  • Loading branch information
bukka committed Jul 16, 2017
1 parent 0d0f7cd commit 9c58822
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
12 changes: 8 additions & 4 deletions ext/json/json.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion ext/json/php_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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 */

/*
Expand Down

0 comments on commit 9c58822

Please sign in to comment.