| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
47-bit in the lightud.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
| |
|
|
|
|
| |
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
| |
code" on older operating systems.
|
|
|
|
|
|
|
| |
this can be turned on via cjson.decode_array_with_array_mt(true). off by
default.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
|
|
| |
encoding.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
| |
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
| |
v2.1 already includes it. fixes #21.
|
|
|
|
| |
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to this fix, when the module would be loaded several times
(by-passing `package.loaded`), the `lua_cjson_new` function would
override the `empty_array_mt` table in the registry with a new one.
Comparison for equality between those tables would then fail, and the
behavior would be broken.
This was discovered after loading `cjson` *and* `cjson.safe` in the same
application, resulting in two calls to `lua_cjson_new`.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
| |
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A proposed improved patch of openresty/lua-cjson#1 (a patch commonly
proposed to lua-cjson and its forks), taking into considerations
comments from the original PR.
- use a lightuserdata key to store the metatable in the Lua Registry
(more efficient and avoiding conflicts)
- provide a lightuserdata resulting in empty arrays as well
- tests cases moved to t/agentzh.t, where cases for
'encode_empty_table_as_object' are already written. It seems like a
better place for tests specific to the OpenResty fork's additions.
- a more complex test case
|
|
|
|
|
|
|
|
| |
cjson.encode_number_precision().
thanks lordnynex for the patch in #4.
Test cases for changing precision
|
|
|
|
| |
encode_empty_table_as_object so that we can encode empty Lua tables into empty JSON arrays.
|
|
|
|
|
| |
Use Javascript compatible values for Infinity/NaN when encoding invalid
numbers.
|
| |
|
|
|
|
| |
Add cjson.safe module to suppress exceptions during JSON conversions.
|
| |
|
|
|
|
|
| |
Bump version to 2.0devel due to significant changes and updated API
(runtime config not fully backwards compatible).
|
|
|
|
|
|
|
|
|
|
| |
Unlike "decode", encoding leaves both the key/value on the stack before
descending. This leaves no spare room for luaL_error() in case the depth
check or lua_checkstack() fails. Allocate an extra stack slot to ensure there is always room for
luaL_error() in json_check_encode_depth().
Note: this would not have caused a crash or fault due to the EXTRA_STACK
slot reserve, but it was a misuse of the Lua C API.
|
|
|
|
|
|
| |
Remove deprecated "refuse_invalid_numbers" since the version number will
be bumped to 1.1.0. Also remove "version" variable since it has been
replaced by _VERSION.
|
| |
|
|
|
|
|
|
|
| |
Disable registration of cjson module table global variable in the
default build. Automatically creating a variable in the global namespace
can cause issues for other software and is no longer recommended with
Lua.
|
|
|
|
|
|
| |
Return boolean values from configuration functions to simplify usage in
the common case. Eg,:
if not cjson.encode_invalid_numbers() then .. end
|
|
|
|
|
|
|
|
|
| |
Include depth and character index when throwing decode nesting errors.
Pre-emptively add a test decoding a massively nested JSON array. Lua
stack overflow faults are unlikely to occur on simple data structures.
Valgrind can highlight stack allocation bugs with complicated JSON even
if the test succeeds.
|
|
|
|
|
|
|
|
|
| |
Ensure there are enough Lua stack slots available before descending into
another table during encoding. This fixes a segfault when encoding
deeply nested tables.
This bug wasn't noticed earlier due to the previous limit of 20 nested
tables.
|
|
|
|
|
|
|
| |
Simplify configuration functions by adding an argument position
parameter to json_enum_option() and json_integer_option(). Create
json_arg_init() to check the number of arguments and return the config
data.
|
|
|
|
| |
Also ensure cjson.decode() only receives a single argument.
|
| |
|
|
|
|
|
| |
Increase the default nesting limits to reduce the chance of accidently
throwing an error on valid JSON out of the box.
|
|
|
|
|
| |
Deprecate and replace refuse_invalid_numbers() with
encode_invalid_numbers() and decode_invalid_numbers().
|
|
|
|
|
|
|
|
|
|
|
| |
Lua 5.2 is able to extend the Lua stack much further than earlier
versions. Recent testing shows it is possible for Lua CJSON to hit the
process stack limit and segfault. Add a configurable JSON object/array
nesting limit to prevent running out of process stack space.
The current limit is 20 (same as encode).
Add decode_max_depth() configuration function.
|
|
|
|
|
|
|
|
|
| |
Track pointer to the current location in the JSON string, instead of
an index to the string array. Improves decode performance 1-10%.
json_next_token():
- Clean up white space handling and leave "ch" containing the current
non-whitespace character.
|
| |
|
|
|
|
|
| |
Windows MinGW doesn't convert Infinity/NaN/hexadecimal numbers. Add
DISABLE_INVALID_NUMBERS build option option to disable invalid numbers.
|
| |
|
|
|
|
|
|
| |
- Sanitised arg ordering to encode functions
- Commented json->tmp to explain why decode string processing uses
strbuf_*_unsafe() functions.
|
|
|
|
|
|
|
| |
Only update the locale when the module is initialised.
cjson.new() can be used if the locale changes part way
through program execution.
|
|
|
|
|
|
| |
When encode_keep_buffer is false, a private buffer will be used.
This will allow multiple encoders to run within a single Lua
state.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Update all Lua scripts to use new module init style everywhere:
local json = require "cjson"
Lua CJSON does not register a global table under Lua 5.2. The global
table can be disabled under Lua 5.1 with DISABLE_CJSON_GLOBAL.
Other changes:
- Store CJSON configuration as an upvalue for each function.
- Add "cjson.new" function to create another module table with a
separate configuration.
- Add _NAME and _VERSION variables.
|
|
|
|
|
|
|
|
| |
Create a separate buffer and translate comma <> dot before calling
strtod(), and after calling sprintf() as required.
- Add "update_locale" Lua API call and init locale on module load.
- Move sprintf format string to fpconv
|
| |
|
| |
|
|
|
|
|
|
| |
build-packages.sh has several advantages:
- Automatically bumps version numbers
- Builds HTML documentation on the fly
|
|
|
|
|
| |
The external #define complicates compilation but is only used in
lua_cjson.c and Makefile.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add USE_POSIX_SETLOCALE option for platforms missing uselocale().
Document locale options in README, Makefile & rockspec.
Also:
- Rename USE_POSIX_LOCALE define to USE_POSIX_USELOCALE.
- Use uselocale() by default through Makefile (Linux, OSX).
- Use setlocale() by default through rockspec (other platforms).
|