Hiroshi SHIBATA
86045fca24
Manually merged from flori/json
...
> https://github.com/flori/json/pull/525
> Rename escape_slash in script_safe and also escape E+2028 and E+2029
Co-authored-by: Jean Boussier <[email protected] >
> https://github.com/flori/json/pull/454
> Remove unnecessary initialization of create_id in JSON.parse()
Co-authored-by: Watson <[email protected] >
2023-12-01 16:47:06 +09:00
Jean Boussier and Hiroshi SHIBATA
698cb84062
Use ruby_xfree to free buffers
...
They are allocated with ruby_xmalloc, they should be freed with
ruby_xfree.
2023-12-01 16:47:06 +09:00
John Hawthorn and Hiroshi SHIBATA
4b770527c2
[flori/json] Fix "unexpected token" offset for Infinity
...
Previously in the JSON::Ext parser, when we encountered an "Infinity"
token (and weren't allowing NaN/Infinity) we would try to display the
"unexpected token" at the character before.
https://github.com/flori/json/commit/42ac170712
2023-12-01 16:47:06 +09:00
Nobuyoshi Nakada
104089ce02
[flori/json] [DOC] Remove duplicate sentence
...
https://github.com/flori/json/commit/ed242667b4
2023-07-19 00:02:58 +09:00
Nobuyoshi Nakada
f1f84ca71c
[flori/json] Remove HAVE_RB_SCAN_ARGS_OPTIONAL_HASH check
...
This macro is defined since ruby 2.1, which is older than the required
ruby version.
https://github.com/flori/json/commit/dd1d54e78a
2023-07-19 00:02:58 +09:00
Dimitar Haralanov and Hiroshi SHIBATA
9977462fd9
[flori/json] Rename JSON::ParseError to JSON:ParserError
...
https://github.com/flori/json/commit/20b80ca317
2023-07-18 12:25:54 +09:00
Jean Boussier and Hiroshi SHIBATA
66b52f046f
[flori/json] Stop including the parser source __LINE__ in exceptions
...
It makes testing for JSON errors very tedious. You either have
to use a Regexp or to regularly update all your assertions
when JSON is upgraded.
https://github.com/flori/json/commit/de9eb1d28e
2022-07-29 19:10:10 +09:00
Andrew Bromwich and Hiroshi SHIBATA
a15d0e267a
[flori/json] Fix parser bug for empty string allocation
...
When `HAVE_RB_ENC_INTERNED_STR` is enabled it is possible to
pass through a null pointer to `rb_enc_interned_str` resulting
in a segfault
Fixes #495
https://github.com/flori/json/commit/b59368a8c2
2022-05-20 17:49:13 +09:00
Hiroshi SHIBATA and Bruno Gomes da Silva
767f3904ee
[flori/json] Doc: Improve documentation on JSON#parse and JSON#parse!
...
https://github.com/flori/json/commit/75ada77b96
Co-authored-by: Bruno Gomes da Silva <[email protected] >
2022-05-20 17:49:13 +09:00
Jean Boussier and Hiroshi SHIBATA
2de594ca98
[flori/json] Deduplicate strings inside json_string_unescape
...
[ci 2]
https://github.com/flori/json/commit/1982070cb8
2021-05-17 19:51:51 +09:00
Jean Boussier and Hiroshi SHIBATA
1d2b4ccaf2
[flori/json] Refactor json_string_unescape
...
https://github.com/flori/json/commit/f398769332
2021-05-17 19:51:50 +09:00
Kenta Murata
14d7d1df25
[json] Make json Ractor safe
2020-12-21 22:10:43 +09:00
Kenta Murata
4c2e7f26bd
[json] JSON_parse_float: Fix how to convert number
...
Stop BigDecimal-specific optimization. Instead, it tries the conversion
methods in the following order:
1. `try_convert`,
2. `new`, and
3. class-named function, e.g. `Foo::Bar.Baz` function for `Foo::Bar::Baz` class
If all the above candidates are unavailable, it fallbacks to Float.
2020-12-21 22:10:43 +09:00
Jean Boussier and Hiroshi SHIBATA
520e0916af
Implement a freeze: parser option
...
If set to true all parsed objects will be
immediately frozen, and strings will be
deduplicated if the Ruby implementation
allows it.
2020-10-20 21:40:25 +09:00
Watson and Hiroshi SHIBATA
cb3e62511c
[flori/json] Use frozen string for hash key
...
When use non-frozen string for hash key with `rb_hash_aset()`, it will duplicate and freeze it internally.
To avoid duplicate and freeze, this patch will give a frozen string in `rb_hash_aset()`.
```
Warming up --------------------------------------
json 14.000 i/100ms
Calculating -------------------------------------
json 148.844 (± 1.3%) i/s - 756.000 in 5.079969s
```
```
Warming up --------------------------------------
json 16.000 i/100ms
Calculating -------------------------------------
json 165.608 (± 1.8%) i/s - 832.000 in 5.025367s
```
```
require 'json'
require 'securerandom'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id": i,
"uuid": SecureRandom.uuid,
"created_at": Time.now
}
end
json = obj.to_json
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.parse(json)
count += 1
end
end
end
```
https://github.com/flori/json/commit/18292c0c1d
2020-07-01 18:47:51 +09:00
Florian Frank and Nobuyoshi Nakada
7376d70cb0
[flori/json] Only attempt to resize strings not other objects
...
https://github.com/flori/json/commit/167ada8da7
2019-10-14 19:54:48 +09:00
Yusuke Endoh
417c64b9a8
ext/json/parser/parser.rl: Use "signed" char to contain negative values
...
char is not always signed. In fact, it is unsigned in arm.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20191004T181708Z.log.html.gz
```
compiling parser.c
parser.rl: In function ‘unescape_unicode’:
parser.rl:50:5: warning: comparison is always false due to limited range of data type [-Wtype-limits]
if (b < 0) return UNI_REPLACEMENT_CHAR;
^
```
2019-10-05 07:00:57 +09:00
Yusuke Endoh
076d3d758b
ext/json/parser/parser.rl: Update the source code of parser.c
...
There have been some direct changes in parser.c which is automatically
generated from parser.rl. This updates parser.rl to sync the changes:
* 91793b8967
* 79ead821dd
* 80b5a0ff2a
2019-10-05 06:34:40 +09:00
mrkn
a7e3516ff1
Fix JSON::Parser against bigdecimal updates
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-02 05:21:57 +00:00
eregon
e7da0fc34e
ext/json/parser/parser.c: do not call rb_str_resize() on Time object
...
* See https://github.com/flori/json/issues/342
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-03 15:11:36 +00:00
eregon
bf226a9ac4
Fix missed update of parser source in r62429
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-03 15:11:22 +00:00
hsbt
b304078ae6
Merge json-2.1.0 from https://github.com/flori/json
...
https://github.com/flori/json/blob/master/CHANGES.md#2017-04-18-210
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-16 03:04:46 +00:00
hsbt
83735ba29a
Merge json-2.0.4.
...
* https://github.com/flori/json/releases/tag/v2.0.4
* https://github.com/flori/json/blob/09fabeb03e73ed88dc8ce8f19d76ac59e51dae20/CHANGES.md#2017-03-23-204
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-12 00:21:18 +00:00
hsbt
11a94f2a36
* ext/json/*, test/json/json_parser_test.rb: Update json-2.0.2.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-01 03:16:30 +00:00
hsbt
1130658738
* ext/json/*, test/json/*: Update json-2.0.1.
...
Changes of 2.0.0: https://github.com/flori/json/blob/f679ebd0c69a94e3e70a897ac9a229f5779c2ee1/CHANGES.md#2015-09-11-200
Changes of 2.0.1: https://github.com/flori/json/blob/f679ebd0c69a94e3e70a897ac9a229f5779c2ee1/CHANGES.md#2016-07-01-201
[Feature #12542 ][ruby-dev:49706][fix GH-1395]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-05 11:49:39 +00:00
nobu
f12fccbec5
parser.rl: rb_scan_args
...
* ext/json/parser/parser.rl (cParser_initialize): use ':' in
rb_scan_args.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-25 08:06:57 +00:00
nobu
cbf902fc33
parser.rl: allocate structs with wrapper
...
* ext/json/parser/parser.rl (cJSON_parser_s_allocate): allocate
structs with making new wrapper objects and get rid of potential
memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 07:17:42 +00:00
nobu
5c0df05b92
parser.rl: define enc_raise iff necessary
...
* ext/json/parser/parser.rl (enc_raise): no needs if rb_enc_raise
is available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-18 06:24:38 +00:00
nobu
b38c0b7974
parser.rl: rb_enc_raise
...
* ext/json/parser/parser.rl: raise with messages in UTF-8
encoding. [ruby-core:67386] [Bug #10705 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-18 06:19:52 +00:00
nobu
f47dc0738a
parser.rl: use rb_encoding
...
* ext/json/parser/parser.rl (convert_encoding): use rb_encoding
functions to compare and convert encodings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-18 06:18:50 +00:00
nobu
6583e5dbfa
parser.rl: use StringValue
...
* ext/json/parser/parser.rl (cParser_initialize): use StringValue
instead of direct rb_convert_type and remove duplicate
conversion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-18 06:18:37 +00:00
hsbt
2e4f0af00f
* ext/json/*, test/json/*: Reverted r50231. Because it's not works with
...
cross-compile environment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-12 08:36:37 +00:00
hsbt
cfaddc2a32
* ext/json/*, test/json/*, defs/default_gems: Gemify JSON library.
...
[fix GH-867][Feature #11057 ]
* test/ruby/test_extlibs.rb: removed json gem from existence extentions.
* gems/bundled_gems: added json gem into bundled gem.
* lib/rdoc/rubygems_hook.rb: ignored no json environment.
* lib/rubygems/test_case.rb, test/rubygems/*: ditto.
* lib/rdoc/test_case.rb, test/rdoc/*: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-11 11:14:36 +00:00
hsbt
f5219fee63
* ext/json: merge upstream from flori/json
...
change usage of TypedData. [Feature #10739 ][ruby-core:67564]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-13 05:19:12 +00:00
hsbt
8f37674ffd
* ext/json, test/json: merge JSON HEAD(259dee6)
...
separate imprementation of Typed_Data macro.
https://github.com/flori/json/compare/v1.8.1...v1.8.2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-13 12:08:28 +00:00
hsbt
4a481ad400
* ext/json, test/json: merge JSON HEAD(17fe8e7)
...
https://github.com/flori/json/compare/v1.8.1...17fe8e7
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-28 22:29:11 +00:00
nobu
5547719573
ext/json: for ancient backward compatibilities
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-28 17:03:36 +00:00
nobu
d29ff24793
json: backward compatibilities
...
* ext/json/generator/generator.c (JSON_Generator_State_type): add
#ifdef for backward compatibility.
* ext/json/parser/parser.rl (JSON_Parser_type): ditto.
* ext/json/generator/generator.h (ZALLOC): add fallback definition.
* ext/json/parser/parser.h (ZALLOC): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-27 11:12:58 +00:00
nobu
993f22cb1b
parser.rl: check before use
...
* ext/json/parser/parser.rl (unescape_unicode): check if valid
before bit-or assignments.
reported by Denis Denisov <denji0k AT gmail.com>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-26 06:13:15 +00:00
nobu
e580a631be
use 0 for reserved
...
use 0 for rb_data_type_t::reserved instead of NULL, since its type
may be changed in the future and possibly not a pointer type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-01 06:38:04 +00:00
nobu
1e46f02394
json/parser: typed data
...
* ext/json/parser/parser.rl (JSON_Parser_type): turn into typed
data.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-04 23:33:11 +00:00
naruse
062d2ee6f7
* ext/json: merge JSON 1.7.7.
...
This includes security fix. [CVE-2013-0269]
https://github.com/flori/json/commit/d0a62f3ced7560daba2ad546d83f0479a5ae2cf2
https://groups.google.com/d/topic/rubyonrails-security/4_YvCpLzL58/discussion
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-12 03:05:45 +00:00
naruse
5a00be2bf7
* ext/json: Merge JSON 1.7.1.
...
https://github.com/flori/json/commit/e5b9a9465c1159fae533bca320d950b772bcb4ac
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-07 16:00:49 +00:00
naruse
4d8d3184d1
* ext/json: Merge 164a75c8bd2007d32c4d7665d53140d8fc126dcd.
...
[ruby-core:41917] [Bug #5846 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 13:36:06 +00:00
naruse
c358a4cba1
* ext/json/parser/parser.rl (json_string_unescape): workaround fix
...
for over optimization of GCC 4.7. [ruby-core:42085] [Bug #5888 ]
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51862
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-15 06:52:36 +00:00
naruse
b14c060dda
* ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
...
[Bug #5173 ] [ruby-core:38866]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-30 02:23:12 +00:00
naruse
a2e497d5ed
* ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
...
[Bug #4700 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-10 08:01:04 +00:00
nobu
29e497d231
* ext/json/{generator/generator.c,parser/parser.rl}: fix indent.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 09:00:54 +00:00
nobu
bc1fd9458d
* ext/json/parser/parser.rl (JSON_parse_object): add missing parens.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 09:00:51 +00:00
nobu
4902ef7d59
* ext/json/parser/parser.rl (convert_encoding): should not modify
...
the argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 07:40:41 +00:00