From 84fe2cc890e49f40bac7c3ba74b3cfc6dc4cef2f Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 23 Jun 2012 20:46:27 +0200 Subject: Improve json_encode error handling json_encode() now returns bool(false) for all possible errors, throws the respective warning and also sets the respective json_last_error() error code. Three new error codes have been added: * JSON_ERROR_RECURSION * JSON_ERROR_INF_OR_NAN * JSON_ERROR_UNSUPPORTED_TYPE To get a partial JSON output instead of bool(false) the option JSON_PARTIAL_OUTPUT_ON_ERROR can be specified. In this case the invalid segments will be replaced either by null (for recursion, unsupported type and invalid JSON) or 0 (for Inf and NaN). The warning for invalid UTF-8 stays intact and is thrown also with display_errors = On. If this behavior is undesired this can be remedied later. --- ext/json/JSON_parser.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'ext/json/JSON_parser.h') diff --git a/ext/json/JSON_parser.h b/ext/json/JSON_parser.h index 746190bb35..5037344890 100644 --- a/ext/json/JSON_parser.h +++ b/ext/json/JSON_parser.h @@ -24,7 +24,10 @@ enum error_codes { PHP_JSON_ERROR_STATE_MISMATCH, PHP_JSON_ERROR_CTRL_CHAR, PHP_JSON_ERROR_SYNTAX, - PHP_JSON_ERROR_UTF8 + PHP_JSON_ERROR_UTF8, + PHP_JSON_ERROR_RECURSION, + PHP_JSON_ERROR_INF_OR_NAN, + PHP_JSON_ERROR_UNSUPPORTED_TYPE }; extern JSON_parser new_JSON_parser(int depth); -- cgit v1.2.1