26 Commits
Author SHA1 Message Date
MarcandTim Düsterhus 13169cd2fe json: Stop tracking columns in the success path (#22487)
Instead of tracking columns during lexing, which costs performance for
something that will only be required in the unexpected failure path, we now
only track the line numbers and calculate the column on demand when an error
occurs.

As part of this we also fix GH-22487 by adjusting the logic to report the
column based on the (UTF-8) column in the source, instead of treating
`\uXXXX` escapes as a single column, which users will need to count manually
instead of being able to rely on their editor or `mb_substr()` or similar.

[tim: (re)written the commit message]

Co-authored-by: Tim Düsterhus <tim@bastelstu.be>
2026-07-13 12:59:42 +02:00
Tim Düsterhus cd80e3e807 json: Store errors in a structured fashion (#22421)
This will make it both easier to consume the error information and reduce the
chance for mistakes when settings errors, because not every field will need to
be set manually.

The functions that have been removed as part of this change were added in
master only, thus removing those is not an API change between the latest stable
(PHP 8.5) and this PR.

Fixes php/php-src#22420.
2026-06-25 21:26:21 +02:00
Ben Ramsey 1101afb730 license-update: ext/json source headers
RFC: https://wiki.php.net/rfc/php_license_update
2026-04-11 21:20:54 -05:00
Juan Morales b80ffc5b2e Json last error msg/error message with location error (#20629)
This slightly extend error messages with locations taken from scanner / parser
2026-01-03 18:34:19 +01:00
Juan Moralesandjcm 2e8699f6f2 RFC - json_validate() (#9399)
* Add `json_validate(string $json, int $depth = 512, int $flags = 0): bool` from https://wiki.php.net/rfc/json_validate
* In json_validate, use a different set of C no-op functions for creating/updating
   arrays/objects when validating while reusing the unmodified parser/scanner code
* Forbid unsupported flags in json_validate()
* Remove test of passing NULL as parameter (normal behavior of https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg for internal functions)

Co-authored-by: jcm <juan.carlos.morales@tradebyte.com>
2022-10-08 09:21:59 -04:00
KsaR 01b3fc03c3 Update http->https in license (#6945)
1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https.
2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier".
3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted.
4. fixed indentation in some files before |
2021-05-06 12:16:35 +02:00
twosee 88355dd338 Constify char * arguments of APIs
Closes GH-5676.
2020-06-08 10:38:45 +02:00
Gabriel Caruso 5d6e923d46 Remove mention of PHP major version in Copyright headers
Closes GH-4732.
2019-09-25 14:51:43 +02:00
Zeev Suraski 38c337f22e Remove year range from copyright notice 2019-01-30 11:00:23 +02:00
Peter Kokot 1ad08256f3 Sync leading and final newlines in source code files
This patch adds missing newlines, trims multiple redundant final
newlines into a single one, and trims redundant leading newlines.

According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.

C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."

Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
2018-10-14 12:56:38 +02:00
Xinchen Hui a6519d0514 year++ 2018-01-02 12:57:58 +08:00
Sammy Kaye Powers 9e29f841ce Update copyright headers to 2017 2017-01-02 09:30:12 -06:00
Dmitry Stogov 323b2733f6 Fixed compilation warnings 2016-06-22 00:40:50 +03:00
Jakub Zelenka 0a0e42d1f5 Add php_json_yyparse for direct use in json ext 2016-05-11 21:11:47 +01:00
Jakub Zelenka b91c05ea14 Fix and clean up exporting of json parser 2016-05-11 20:54:42 +01:00
Jakub Zelenka 37048c0f6c Use embedded json parser method structure 2016-05-02 13:02:40 +01:00
Jakub Zelenka 93b67dd511 Remove json parser depth methods and tidy it up 2016-04-10 16:10:26 +01:00
Jakub Zelenka 72ccfda25a Add method hooking support to json parser
This commit is just a slight modification (renaming and some small
changes) of the patch that has been provided by Andrey Hristov.
It adds support for hooking of the json parser operations and
allows re-using of modified JSON parsing outside of json ext.
2016-04-10 15:35:41 +01:00
Lior Kaplan 2eb1f38d24 Happy new year (Update copyright to 2016) 2016-01-01 20:03:16 +02:00
Lior Kaplan a4384bd3d4 s/PHP Version 5/PHP Version 7/g
Follow up for d0cb7153
2015-03-13 11:09:42 +02:00
Anatol Belski ef2fd13de8 fix datatype mismatches 2015-02-09 11:06:02 +01:00
Anatol Belski a1208b4726 use size_t for str length 2015-02-09 10:43:27 +01:00
Jakub Zelenka 3159d518d0 Merge branch 'master' into jsond
Conflicts:
	ext/json/JSON_parser.c
	ext/json/json.c
2015-01-25 18:43:15 +00:00
Jakub Zelenka b68da91d52 Merge branch 'master' into jsond
Conflicts:
	ext/json/JSON_parser.c
	ext/json/JSON_parser.h
	ext/json/config.m4
	ext/json/config.w32
	ext/json/json.c
	ext/json/php_json.h
2014-12-27 19:42:04 +00:00
Jakub Zelenka e18dd67975 Move json encoding stuff 2014-11-24 20:46:13 +00:00
Jakub Zelenka d07bf91328 Initial import of jsond 2014-11-13 20:20:46 +00:00